Android SQLITE查询异常错误?

时间:2015-03-02 06:02:30

标签: android sqlite

我想在我的应用程序中添加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);

4 个答案:

答案 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数据类型。