Java 如何在execSQL()中使用变量?

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

我试图从EditText字段中获取一些存储的值,并将它们存储到我的SQLLite数据库中

我有以下字符串变量:

站点名称 _地址 _使用者 _通过

下面是我尝试使用的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 + ");");
我在另一个活动中检查如下值:

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+"') ");

我希望这些已经被消毒了?我不知道如何修复第二个超链接的格式。