Java 如何在execSQL()中使用变量?
我试图从EditText字段中获取一些存储的值,并将它们存储到我的SQLLite数据库中 我有以下字符串变量: 站点名称 _地址 _使用者 _通过 下面是我尝试使用的Sql命令:Java 如何在execSQL()中使用变量?,java,android,sqlite,Java,Android,Sqlite,我试图从EditText字段中获取一些存储的值,并将它们存储到我的SQLLite数据库中 我有以下字符串变量: 站点名称 _地址 _使用者 _通过 下面是我尝试使用的Sql命令: SQLiteDatabase db = openOrCreateDatabase("SiteManager", MODE_PRIVATE, null); db.execSQL("CREATE TABLE IF NOT EXISTS SiteTable (Name VARC
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 + ");");
我在另一个活动中检查如下值:
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语句中使用变量的方式有问题。我做错了什么?如果您使用的是标准的Android绑定,其Javadoc位于,那么您可以通过查看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
对象中获取附加数据。因此,您可以使用新行的数据构造该对象,它看起来像一个映射。这就是您正在搜索的答案
sqLiteDatabase.execSQL("insert into userTable (username,name,password,email)
values('"+username+"','"+name+"','"+password+"','"+email+"') ");
我希望这些已经被消毒了?我不知道如何修复第二个超链接的格式。