Mình đang tìm hiểu về SQLite trên android và có viết đoạn code theo đúng hướng dẫn trên mạng, nhưng khi thêm dữ liệu thì nói là thất bại, Xin mọi người giúp đỡ
- MainActivity:
public class MainActivity extends ActionBarActivity {
private EditText et1, et2, et3;
private Button bt1;
SQLiteDatabase db;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = new SQLiteDatabase(this);
et1 = (EditText) findViewById(R.id.editText1);
et2 = (EditText) findViewById(R.id.editText2);
et3 = (EditText) findViewById(R.id.editText3);
bt1 = (Button) findViewById(R.id.button1);
bt1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
LienHe lh = new LienHe();
lh.setId(Integer.parseInt(et1.getText().toString()));
lh.setTen(et2.getText().toString());
lh.setSdt(et3.getText().toString());
db.ThemLienHe(lh);
}
});
}
}
- SQLiteDatabase
public class SQLiteDatabase extends SQLiteOpenHelper {
public final static String DATABASE_NAME = "ThongTin";
public final static int DATABASE_VERSION = 1;
public final static String TABLE_NAME = "SinhVien";
public final static String KEY_ID = "id";
public final static String KEY_NAME = "hoTen";
public final static String KEY_PHONE = "sdt";
Context context;
public SQLiteDatabase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.context = context;
}
public void ThemLienHe(LienHe lh) {
android.database.sqlite.SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_ID, lh.getId());
values.put(KEY_NAME, lh.getTen());
values.put(KEY_PHONE, lh.getSdt());
String msg = "";
if (db.insert(TABLE_NAME, null, values) == -1) {
msg = "Lưu thất bại";
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
} else {
msg = "Lưu thành công";
Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCreate(android.database.sqlite.SQLiteDatabase db) {
String sql = "create table " + TABLE_NAME + " ( " + KEY_ID + " Integer primary key, " + KEY_NAME + " TEXT, "
+ KEY_PHONE + " TEXT" + ")";
db.execSQL(sql);
}
@Override
public void onUpgrade(android.database.sqlite.SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if exits " + TABLE_NAME);
onCreate(db);
}
}
- Logcat:
09-05 23:07:14.024: E/SQLiteLog(1344): (1) table SinhVien has no column named id
09-05 23:07:14.024: E/SQLiteDatabase(1344): Error inserting id=1 hoTen=lequanghung sdt=01652419113
09-05 23:07:14.024: E/SQLiteDatabase(1344): android.database.sqlite.SQLiteException: table SinhVien has no column named id (code 1): , while compiling: INSERT INTO SinhVien(id,hoTen,sdt) VALUES (?,?,?)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1467)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at com.example.study.SQLiteDatabase.ThemLienHe(SQLiteDatabase.java:31)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at com.example.study.MainActivity$1.onClick(MainActivity.java:42)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at android.view.View.performClick(View.java:4438)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at android.view.View$PerformClick.run(View.java:18422)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at android.os.Handler.handleCallback(Handler.java:733)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at android.os.Handler.dispatchMessage(Handler.java:95)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at android.os.Looper.loop(Looper.java:136)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at android.app.ActivityThread.main(ActivityThread.java:5001)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at java.lang.reflect.Method.invokeNative(Native Method)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at java.lang.reflect.Method.invoke(Method.java:515)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
09-05 23:07:14.024: E/SQLiteDatabase(1344): at dalvik.system.NativeStart.main(Native Method)