0

我正在尝试从 EditText 字段中获取一些存储的值并将它们存储到我的 SQLLite DB 中。

我有以下字符串变量:

站点名称 _地址 _用户 _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 + ");");

我正在另一个活动中检查这样的值:

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 语句中使用变量的方式有问题。我究竟做错了什么?

4

2 回答 2

1

如果您使用的是标准 Android 绑定,其 Javadoc 位于http://developer.android.com/reference/android/database/sqlite/package-summary.html,那么您可以通过查看找到正确的代码来调用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所以,你用新行的数据构造了那个看起来像 a 的对象。

于 2013-05-07T02:05:29.053 回答
0

这是您正在寻找的答案

sqLiteDatabase.execSQL("insert into userTable (username,name,password,email) 
values('"+username+"','"+name+"','"+password+"','"+email+"') ");
于 2018-05-01T23:09:07.427 回答