我正在尝试从EditText字段中存储一些值并将它们存储到我的SQLLite DB中。
我有以下字符串变量:
SITE_NAME _地址 _用户 _pass
这是我正在尝试使用的Sql命令:
SQLiteDatabase db = openOrCreateDatabase("SiteManager", MODE_PRIVATE,
null);
db.execSQL("CREATE TABLE IF NOT EXISTS SiteTable (Name VARCHAR, Address VARCHAR, Usernname VARCHAR, Password VARCHAR, PORT INT(4), Passive BIT);");
db.execSQL("INSERT INTO SiteTable VALUES ('" + site_name + "','"
+ _address + "','" + _user + "','" + _pass + "'," + _port + ","
+ _passive + ");");
我正在另一个Activity中检查这个值:
SQLiteDatabase db = openOrCreateDatabase("SiteManager",
MODE_PRIVATE, null);
Cursor c = db.rawQuery("SELECT * FROM SiteTable", null);
c.moveToFirst();
Toast.makeText(this, c.getString(c.getColumnIndex("Name")),
Toast.LENGTH_LONG).show();
db.close();
在调试器中,它显示c没有任何值,但列名存在。所以这让我觉得我在SQL语句中尝试使用变量的方式有问题。我做错了什么?
答案 0 :(得分:1)
如果您正在使用其Javadoc位于http://developer.android.com/reference/android/database/sqlite/package-summary.html的标准Android绑定,那么您可以通过查看Javadoc以查找execSQL
的重载来找到要调用的正确代码。请参阅http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#execSQL(java.lang.String,%20java.lang.Object [])。
现在,Javadoc说execSQL
不能用于SELECT/INSERT/UPDATE/DELETE
。相反,有三个insertXXX
方法,每个方法都在ContentValues
对象中获取其他数据。因此,您使用新行的数据构造该对象,看起来像Map
。
答案 1 :(得分:0)
这是您正在搜索的答案
sqLiteDatabase.execSQL("insert into userTable (username,name,password,email)
values('"+username+"','"+name+"','"+password+"','"+email+"') ");