Сбой Android при подключении к sqlite?
Я новичок в android и не очень хорошо осведомлен об этом. Мне нужно подключить android studio к SQLite , в android studio я сделал приложение ,которое берет текстовое поле и вставляет данные SQLite, я написал следующий код в основном действии
package com.example.helloworld; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import java.text.BreakIterator; public class MainActivity extends AppCompatActivity { BreakIterator lst = null; BreakIterator studentid = null; BreakIterator studentname = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void loadStudents(View view) { MyDBHandler dbHandler = new MyDBHandler(this, null, null, 1); lst.setText(dbHandler.loadHandler()); studentid.setText(""); studentname.setText(""); } public void addStudent(View view) { MyDBHandler dbHandler = new MyDBHandler(this, null, null, 1); int id = Integer.parseInt(studentid.getText().toString()); String name = studentname.getText().toString(); Student student = new Student(id,name); dbHandler.addHandler(student); studentid.setText(""); studentname.setText(""); } public void findStudent(View view) { MyDBHandler dbHandler = new MyDBHandler(this, null, null, 1); Student student = dbHandler.findHandler(studentname.getText().toString()); if (student != null) { lst.setText(student.getID() + " " + student.getStudentName() + System.getProperty("line.separator")); // lst = findViewById(R.id.lst); studentid.setText(""); studentname.setText(""); }else { lst.setText("No Match Found"); studentid.setText(""); studentname.setText(""); } } public void removeStudent(View view) { MyDBHandler dbHandler = new MyDBHandler(this, null, null, 1); Boolean result = dbHandler.deleteHandler(Integer.parseInt(studentid.getText().toString())); if (result) { studentid.setText(""); studentname.setText(""); lst.setText("Record Deleted"); } else studentid.setText("No Match Found"); } public void updateStudent(View view) { MyDBHandler dbHandler = new MyDBHandler(this, null, null, 1); Boolean result = dbHandler.updateHandler(Integer.parseInt(studentid.getText().toString()), studentname.getText().toString()); if (result) { studentid.setText(""); studentname.setText(""); lst.setText("Record Updated"); } else studentid.setText("No Match Found"); } } ` **and this is the db adapter** package com.example.sqliteoperations; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class myDbAdapter { myDbHelper myhelper; public myDbAdapter(Context context) { myhelper = new myDbHelper(context); } public long insertData(String name, String pass) { SQLiteDatabase dbb = myhelper.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(myDbHelper.NAME, name); contentValues.put(myDbHelper.MyPASSWORD, pass); long id = dbb.insert(myDbHelper.TABLE_NAME, null , contentValues); return id; } public String getData() { SQLiteDatabase db = myhelper.getWritableDatabase(); String[] columns = {myDbHelper.UID,myDbHelper.NAME,myDbHelper.MyPASSWORD}; Cursor cursor =db.query(myDbHelper.TABLE_NAME,columns,null,null,null,null,null); StringBuffer buffer= new StringBuffer(); while (cursor.moveToNext()) { int cid =cursor.getInt(cursor.getColumnIndex(myDbHelper.UID)); String name =cursor.getString(cursor.getColumnIndex(myDbHelper.NAME)); String password =cursor.getString(cursor.getColumnIndex(myDbHelper.MyPASSWORD)); buffer.append(cid+ " " + name + " " + password +" \n"); } return buffer.toString(); } public int delete(String uname) { SQLiteDatabase db = myhelper.getWritableDatabase(); String[] whereArgs ={uname}; int count =db.delete(myDbHelper.TABLE_NAME ,myDbHelper.NAME+" = ?",whereArgs); return count; } public int updateName(String oldName , String newName) { SQLiteDatabase db = myhelper.getWritableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(myDbHelper.NAME,newName); String[] whereArgs= {oldName}; int count =db.update(myDbHelper.TABLE_NAME,contentValues, myDbHelper.NAME+" = ?",whereArgs ); return count; } static class myDbHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "myDatabase"; // Database Name private static final String TABLE_NAME = "myTable"; // Table Name private static final int DATABASE_Version = 1; // Database Version private static final String UID="_id"; // Column I (Primary Key) private static final String NAME = "Name"; //Column II private static final String MyPASSWORD= "Password"; // Column III private static final String CREATE_TABLE = "CREATE TABLE "+TABLE_NAME+ " ("+UID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+NAME+" VARCHAR(255) ,"+ MyPASSWORD+" VARCHAR(225));"; private static final String DROP_TABLE ="DROP TABLE IF EXISTS "+TABLE_NAME; private Context context; public myDbHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_Version); this.context=context; } public void onCreate(SQLiteDatabase db) { try { db.execSQL(CREATE_TABLE); } catch (Exception e) { Message.message(context,""+e); } } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { try { Message.message(context,"OnUpgrade"); db.execSQL(DROP_TABLE); onCreate(db); }catch (Exception e) { Message.message(context,""+e); } } } } **and this is student class** package com.example.helloworld; public class Student { // fields private int studentID; private String studentName; // constructors public Student() {} public Student(int id, String studentname){ this.studentID=id; this.studentName = studentname; } // properties public void setlD(int id){ this.studentID=id; } public int getID(){ return this.studentID; } public void setStudentName(String studentname){ this.studentName = studentname; } public String getStudentName(){ return this.studentName; } }
дело в том что когда я запускаю приложение его работа но когда я вставляю в текстовое поле и нажимаю на кнопку приложение рушится и его данные не передаются в SQLite
Что я уже пробовал:
https://stackoverflow.com/questions/64470143/android-crash-when-connecting-to-sqlite[^]
David Crow
"...но когда я вставляю в текстовое поле и нажимаю на кнопку..."
Какое текстовое поле? Какая кнопка? Какой код выполняется в результате "press?"
"...приложение выйдет из строя..."
- Куда же? Создается ли исключение?
После нажатия кнопки" press " вы прошли через код с помощью отладчика?
Richard MacCutchan
- Я новичок в android и не очень хорошо осведомлен об этом."
И все же вам удалось написать довольно сложное приложение. Или этот код был написан кем-то другим?