Как сравнить результат QR с моей базой данных SQLite ⇐ JAVA
-
Anonymous
Как сравнить результат QR с моей базой данных SQLite
Я создаю приложение, в котором QR-код будет сканироваться, а результат сравниваться с данными, находящимися в базе данных.
Я попытался создать метод, который будет возвращать значение true или false в моей помощнике по базе данных
public Boolean checkStudent(String Student_number) { SQLiteDatabase db = this.getWritableDatabase(); Курсор курсора = db.rawQuery("Выберите * из Student_table, где Student_number =?", new String[]{student_number}); если (cursor.getCount() > 0) { вернуть истину; } еще { вернуть ложь; } } Затем в моей основной деятельности, где показывает сканер и результаты, я помещаю этот код
//кнопка для вызова функции сканирования scan_btn = findViewById(R.id.fabScanner); scan_btn.setOnClickListener(новый View.OnClickListener() { @Override общественная недействительность onClick (Просмотр v) { пытаться { Опции ScanOptions = новые ScanOptions(); options.setPrompt("Увеличьте громкость для включения вспышки"); options.setBeepEnabled(истина); options.setOrientationLocked(истина); options.setCaptureActivity(CaptureAct.class); barLauncher.launch(опции); } поймать (Исключение е) { Toast.makeText(MainActivity.this, «Ошибка сканера», Toast.LENGTH_SHORT).show(); } } }); } //вставляем результаты сканирования ---> добавляем функцию, которая будет проверять, существует ли результат qr в базе данных ActivityResultLauncher barLauncher = RegisterForActivityResult(новый ScanContract(), результат-> { если (result.getContents() == null) { Toast.makeText(this, «Еще одна попытка», Toast.LENGTH_SHORT).show(); } еще { // получаем содержимое результата Строковое содержимое = result.getContents(); пытаться { // устанавливаем результат в разные переменные Токены StringTokenizer = новый StringTokenizer(content, ","); Номер строки = tokens.nextToken(); Имя строки = tokens.nextToken(); String time = new SimpleDateFormat("чч:мм a", Locale.getDefault()).format(new Date()); Строка date = new SimpleDateFormat("дд/ММ/гггг", Locale.getDefault()).format(new Date()); // проверяем, существует ли номер в базе данных Логическое значение checkStudNum = myDatabaseHelper.checkStudent(номер); если (checkStudNum) { AlertDialog.Builder builder = новый AlertDialog.Builder(this); builder.setMessage(содержимое) .setCancelable(ложь) .setPositiveButton("ОК", новый DialogInterface.OnClickListener() { public void onClick (диалог DialogInterface, int id) { myDatabaseHelper = новый MyDatabaseHelper(MainActivity.this); myDatabaseHelper.addAttendanceHistory(number.toUpperCase(), name.toUpperCase(), time.toUpperCase(), date.toUpperCase()); } }); AlertDialog alert = builder.create(); оповещение.шоу(); } еще { Toast.makeText(this, «назад к началу», Toast.LENGTH_SHORT).show(); } } catch (Исключение е) { Toast.makeText(this, «Неверный QR-код», Toast.LENGTH_SHORT).show(); } } }); Но каким-то образом мой код выдает «Исключение недопустимого QR-кода», я действительно не знаю, что не так, поскольку я уже пробовал этот метод в другой своей функции, и он работает так, как ожидалось.
Я предполагаю, что у меня возникла проблема с логическим методом.
//проверяем, существует ли номер в базе данных Логическое значение checkStudNum = myDatabaseHelper.checkStudent(номер); если (checkStudNum) { AlertDialog.Builder builder = новый AlertDialog.Builder(this); builder.setMessage(содержимое) .setCancelable(ложь) .setPositiveButton("ОК", новый DialogInterface.OnClickListener() { public void onClick (диалог DialogInterface, int id) { myDatabaseHelper = новый MyDatabaseHelper(MainActivity.this); myDatabaseHelper.addAttendanceHistory(number.toUpperCase(), name.toUpperCase(), time.toUpperCase(), date.toUpperCase()); } }); AlertDialog alert = builder.create(); оповещение.шоу(); } еще { Toast.makeText(this, «назад к началу», Toast.LENGTH_SHORT).show(); } Мой ожидаемый результат заключается в том, что если результат qr аналогичен моим данным в моей базе данных sqlite, он вставит результат qr в мою базу данных, а если он не похож, будет показано исключение «назад к началу». Я новичок в разработке мобильных устройств для Android и языке Java с базой данных sqlite. Поэтому я действительно не знаю, что вызывает проблему в моем коде. Если у вас есть какие-либо идеи или решения, пожалуйста, прокомментируйте!
Я создаю приложение, в котором QR-код будет сканироваться, а результат сравниваться с данными, находящимися в базе данных.
Я попытался создать метод, который будет возвращать значение true или false в моей помощнике по базе данных
public Boolean checkStudent(String Student_number) { SQLiteDatabase db = this.getWritableDatabase(); Курсор курсора = db.rawQuery("Выберите * из Student_table, где Student_number =?", new String[]{student_number}); если (cursor.getCount() > 0) { вернуть истину; } еще { вернуть ложь; } } Затем в моей основной деятельности, где показывает сканер и результаты, я помещаю этот код
//кнопка для вызова функции сканирования scan_btn = findViewById(R.id.fabScanner); scan_btn.setOnClickListener(новый View.OnClickListener() { @Override общественная недействительность onClick (Просмотр v) { пытаться { Опции ScanOptions = новые ScanOptions(); options.setPrompt("Увеличьте громкость для включения вспышки"); options.setBeepEnabled(истина); options.setOrientationLocked(истина); options.setCaptureActivity(CaptureAct.class); barLauncher.launch(опции); } поймать (Исключение е) { Toast.makeText(MainActivity.this, «Ошибка сканера», Toast.LENGTH_SHORT).show(); } } }); } //вставляем результаты сканирования ---> добавляем функцию, которая будет проверять, существует ли результат qr в базе данных ActivityResultLauncher barLauncher = RegisterForActivityResult(новый ScanContract(), результат-> { если (result.getContents() == null) { Toast.makeText(this, «Еще одна попытка», Toast.LENGTH_SHORT).show(); } еще { // получаем содержимое результата Строковое содержимое = result.getContents(); пытаться { // устанавливаем результат в разные переменные Токены StringTokenizer = новый StringTokenizer(content, ","); Номер строки = tokens.nextToken(); Имя строки = tokens.nextToken(); String time = new SimpleDateFormat("чч:мм a", Locale.getDefault()).format(new Date()); Строка date = new SimpleDateFormat("дд/ММ/гггг", Locale.getDefault()).format(new Date()); // проверяем, существует ли номер в базе данных Логическое значение checkStudNum = myDatabaseHelper.checkStudent(номер); если (checkStudNum) { AlertDialog.Builder builder = новый AlertDialog.Builder(this); builder.setMessage(содержимое) .setCancelable(ложь) .setPositiveButton("ОК", новый DialogInterface.OnClickListener() { public void onClick (диалог DialogInterface, int id) { myDatabaseHelper = новый MyDatabaseHelper(MainActivity.this); myDatabaseHelper.addAttendanceHistory(number.toUpperCase(), name.toUpperCase(), time.toUpperCase(), date.toUpperCase()); } }); AlertDialog alert = builder.create(); оповещение.шоу(); } еще { Toast.makeText(this, «назад к началу», Toast.LENGTH_SHORT).show(); } } catch (Исключение е) { Toast.makeText(this, «Неверный QR-код», Toast.LENGTH_SHORT).show(); } } }); Но каким-то образом мой код выдает «Исключение недопустимого QR-кода», я действительно не знаю, что не так, поскольку я уже пробовал этот метод в другой своей функции, и он работает так, как ожидалось.
Я предполагаю, что у меня возникла проблема с логическим методом.
//проверяем, существует ли номер в базе данных Логическое значение checkStudNum = myDatabaseHelper.checkStudent(номер); если (checkStudNum) { AlertDialog.Builder builder = новый AlertDialog.Builder(this); builder.setMessage(содержимое) .setCancelable(ложь) .setPositiveButton("ОК", новый DialogInterface.OnClickListener() { public void onClick (диалог DialogInterface, int id) { myDatabaseHelper = новый MyDatabaseHelper(MainActivity.this); myDatabaseHelper.addAttendanceHistory(number.toUpperCase(), name.toUpperCase(), time.toUpperCase(), date.toUpperCase()); } }); AlertDialog alert = builder.create(); оповещение.шоу(); } еще { Toast.makeText(this, «назад к началу», Toast.LENGTH_SHORT).show(); } Мой ожидаемый результат заключается в том, что если результат qr аналогичен моим данным в моей базе данных sqlite, он вставит результат qr в мою базу данных, а если он не похож, будет показано исключение «назад к началу». Я новичок в разработке мобильных устройств для Android и языке Java с базой данных sqlite. Поэтому я действительно не знаю, что вызывает проблему в моем коде. Если у вас есть какие-либо идеи или решения, пожалуйста, прокомментируйте!
Мобильная версия