我有一个嵌入式数据库与我的应用程序。它位于资产文件夹中。用户应该可以在点击按钮时将新行添加到数据库中。我有下面的代码:sqlite插入按钮单击
insertrow.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
db.open();
try
{
String editmacs=editmac.getText().toString();
db.insertrow(editmacs);
// Context context = getApplicationContext();
}
catch (Exception ex)
{
Toast.makeText(getApplicationContext(), "cannot update", Toast.LENGTH_LONG).show();
}
db.close();
}
});
和相关方法在我SQliteOpenHelper类:
public static SQLiteDatabase myDb;
public static String DATABASE_TABLE="access_points";
public static final String KEY_column1 = "col1";
public static final String KEY_column2 = "col2";
public static final String KEY_column3= "col3";
public static final String KEY_column4 = "col4";
public long insertrow(String editmacs)
{
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_column1, editmacs);
initialValues.put(KEY_column2, "uf");
initialValues.put(KEY_column3, "ub");
initialValues.put(KEY_column4, "uz");
return myDb.insert(DATABASE_TABLE, null, initialValues);
}
问题是与按钮点击editmacs(KEY_column1)没有插入到数据库中。但其他值(例如“uz”)插入(我用sql查询插入的值)。在插入使用buttonpress期间,我没有得到任何异常。任何人都可以告诉为什么编辑文本的editmacs值没有插入?提前致谢。
好的,我从Guillaume的评论中得到了解决方案(见下文)。与插入有关的查询是可以的。问题在别处。请看下面的代码:
buttonuserentry.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
db.open();
try
{
String mac = "";
mac = db.getuserentry();
Context context = getApplicationContext();
String text = mac;
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
catch (Exception ex)
{
Context context = getApplicationContext();
CharSequence text = ex.toString();
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
db.close();
}
});
以前,我用这样的:因为我用的CharSequence
CharSequence mac = "";
mac = db.getuserentry();
Context context = getApplicationContext();
String text = mac;
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
,它显示了从原始数据库最后插入的MAC地址。原始嵌入式数据库将此列声明为Text(所以这意味着Text = Sqliteman中的CharSequence)。我预期的MAC地址是用户最后输入的MAC地址。这个来自editmac视图的mac地址被转换为String。所以,必须将其作为字符串检索,而不是CharSequence。再次感谢Guillaume的帮助,指导我解决问题。
检查KEY_column1的数据类型与KEY_column2的数据类型是否相同 – 2011-12-14 11:20:18
您可以检查值 - >如果为空或不是Log.i(“debug”,editmacs); – Dezigo 2011-12-14 11:24:24