Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Кашина_РМП_ЛБ17_1

.docx
Скачиваний:
0
Добавлен:
22.09.2026
Размер:
100 Кб
Скачать
☆

Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования

«Владимирский государственный университет

имени Александра Григорьевича и Николая Григорьевича Столетовых» (ВлГУ)

Колледж инновационных технологий и предпринимательства

КАФЕДРА ФИЗИКИ И ПРИКЛАДНОЙ МАТЕМАТИКИ

Лабораторная работа № 17_1

по МДК 01.03 «Разработка мобильных приложений»

на тему: «Работа с БД»

Выполнил

студент группы ИПсп-123

Кашина Д. А.

Принял

Красильщикова В.В.

Владимир, 2026 г.

Цель работы: научится работать с настройками и БД в Android Studio.

Ход работы:

1 задание:

разметка activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="100dp" android:text="Открыть БД" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.498" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/textView" android:layout_width="273dp" android:layout_height="173dp" android:layout_marginTop="56dp" android:text=" " app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/button" /> <TextView android:id="@+id/textView2" android:layout_width="264dp" android:layout_height="47dp" android:layout_marginBottom="36dp" android:text="Работу выполнил: студент группы ИПсп-123 Кашина Д." app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.498" app:layout_constraintStart_toStartOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>

Код программы MainActivity.java

package com.example.laba17_1; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView = findViewById(R.id.textView); Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { SQLiteDatabase db = openOrCreateDatabase("app.db", MODE_PRIVATE, null); db.execSQL("CREATE TABLE IF NOT EXISTS users (name TEXT, age INTEGER, UNIQUE(name))"); db.execSQL("INSERT OR IGNORE INTO users VALUES ('Иван Иванов', 23), ('Петров Петр', 31)"); Cursor cursor = db.rawQuery("SELECT * FROM users", null); textView.setText(""); while (cursor.moveToNext()) { String name = cursor.getString(0); // name - столбец 0 int age = cursor.getInt(1); // age - столбец 1 textView.append("Имя: " + name + " Возраст: " + age + "\n"); } cursor.close(); db.close(); } }); } }

Результат работы программы:

2 задание:

Разметка activity_main.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp"> <TextView android:id="@+id/header" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Найдено элементов: " android:textSize="18sp" android:layout_marginBottom="16dp"/> <ListView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout> </LinearLayout>

Код программы MainActivity.java

package com.example.laba17_1part2; import android.app.AlertDialog; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; public class MainActivity extends AppCompatActivity { private TextView header; private ListView userList; private DatabaseHelper databaseHelper; private SQLiteDatabase db; private Cursor userCursor; private SimpleCursorAdapter userAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // НАСТРАИВАЕМ TOOLBAR Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); setTitle("лаба17_1"); header = findViewById(R.id.header); userList = findViewById(R.id.list); databaseHelper = new DatabaseHelper(getApplicationContext()); } @Override protected void onResume() { super.onResume(); db = databaseHelper.getReadableDatabase(); userCursor = db.rawQuery("SELECT * FROM " + DatabaseHelper.TABLE, null); String[] headers = new String[] {DatabaseHelper.COLUMN_NAME, DatabaseHelper.COLUMN_AGE}; userAdapter = new SimpleCursorAdapter( this, android.R.layout.two_line_list_item, userCursor, headers, new int[]{android.R.id.text1, android.R.id.text2}, 0 ); header.setText("Найдено элементов: " + userCursor.getCount()); userList.setAdapter(userAdapter); } @Override protected void onDestroy() { super.onDestroy(); if (userCursor != null) { userCursor.close(); } if (db != null) { db.close(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_about) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("О программе"); builder.setMessage("Лабораторная работа №17_1\nВыполнила Кашина Д."); builder.setPositiveButton("OK", null); builder.show(); return true; } else if (id == R.id.action_exit) { finish(); return true; } return super.onOptionsItemSelected(item); } }

База данных DatabaseHelpel.java

package com.example.laba17_1part2; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DatabaseHelper extends SQLiteOpenHelper { // Название таблицы и столбцов public static final String TABLE = "users"; public static final String COLUMN_ID = "_id"; public static final String COLUMN_NAME = "name"; public static final String COLUMN_AGE = "age"; public DatabaseHelper(Context context) { super(context, "app.db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { // Создаем таблицу String createTable = "CREATE TABLE IF NOT EXISTS " + TABLE + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_NAME + " TEXT UNIQUE, " + COLUMN_AGE + " INTEGER)"; db.execSQL(createTable); // Добавляем начальные данные (русские имена) String insertData = "INSERT OR IGNORE INTO " + TABLE + " (" + COLUMN_NAME + ", " + COLUMN_AGE + ") VALUES ('Иван Иванов', 23), ('Петр Петров', 31)"; db.execSQL(insertData); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE); onCreate(db); } }

Результат работы программы:

Вывод: в ходе лабораторной работы были получены навыки работы с настройками и БД в Android Studio.