我想在我的应用程序中添加sqlite我创建了数据库和表但是SELECT和INSERT查询不起作用我不知道为什么? 在这里,我添加了我的代码:
static Cursor c;
SQLiteDatabase db;
db=openOrCreateDatabase("weatherregisterDB", Context.MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS weatherRegister(id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR,username VARCHAR,password VARCHAR,confirmpassword VARCHAR);");
register.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
db.execSQL("INSERT INTO weatherRegister(id,name,username,password,confirmpassword) VALUES('',sample,sample,sample,sample);");
c=db.rawQuery("SELECT username FROM weatherRegister WHERE username=sample", null);
我的错误是:
android.database.sqlite.SQLiteException: no such column: sample (code 1): , while compiling: INSERT INTO weatherRegister(id,name,username,password,confirmpassword) VALUES('',sample,sample,sample,sample);
答案 0 :(得分:2)
但首先看这一行
db.execSQL("INSERT INTO weatherRegister(id,name,username,password,confirmpassword) VALUES('',sample,sample,sample,sample);");
应该是:
db.execSQL("INSERT INTO weatherRegister(id,name,username,password,confirmpassword) VALUES('sample','sample','sample','sample');");
如果(id)是自动递增的话,你不必为(id)连线,也(String)值应该在('')之间
和选择查询相同
原文:
SELECT username FROM weatherRegister WHERE username=sample
更新至:
SELECT username FROM weatherRegister WHERE username='sample'
希望在向我们展示错误之前提供帮助。
答案 1 :(得分:0)
Ahmad Okaily的回答是正确的。还有一件事是你不需要在插入语句中编写_id,因为它会自动增加。
我已经在SQLite命令行中尝试过,看起来它工作得很好
无法为您提供Android代码版本,因为我公司的PC对于eclipse或android studio来说太慢了。
SQLite version 3.8.7.4 2014-12-09 01:34:36
Enter ".help" for usage hints.
sqlite> INSERT INTO weatherRegister(id,name,username,password,confirmpassword) VALUES('sample','sample','sample','sample');
Error: 4 values for 5 columns
sqlite> INSERT INTO weatherRegister(name,username,password,confirmpassword) VALUES('sample','sample','sample','sample');
sqlite> select * from weatherRegister;
1|sample|sample|sample|sample
sqlite>
答案 2 :(得分:0)
尝试更改此行
c=db.rawQuery("SELECT username FROM weatherRegister WHERE username=sample", null);
到
c=db.rawQuery("SELECT username FROM weatherRegister WHERE username='sample'", null);
请注意#34;示例附近的单个倒置逗号"。希望它会有所帮助。谢谢。
答案 3 :(得分:-1)
使用TEXT作为属性的数据类型,而不是使用VARCHAR数据类型。