gpt4 book ai didi

android - 单击按钮时插入sqlite

转载 作者:行者123 更新时间:2023-11-29 14:03:09 25 4
gpt4 key购买 nike

我的应用程序有一个嵌入式数据库。它在 Assets 文件夹中。用户应该能够在单击按钮时向数据库中添加新行。我有以下代码:

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 插入期间,我没有得到任何异常。谁能说出为什么没有插入来自 edittext 的 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 mac = "";    
mac = db.getuserentry();
Context context = getApplicationContext();
String text = mac;
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();

因为我使用的是 CharSequence,它显示的是原始数据库中最后插入的 mac 地址。原始嵌入式数据库将此列声明为文本(因此在 Sqliteman 中意味着 Text= CharSequence)。我预期的 mac 地址是用户最后输入的 mac 地址。这个来自 editmac View 的 mac 地址被转换为 String。因此,必须将其检索为 String,而不是 CharSequence。再次感谢 Guillaume 帮助我找到解决方案。

最佳答案

您的代码没有任何问题,它应该在列中插入传递的值。

尝试通过添加某种调试警报(例如 Toast)来确保您拥有一个值:

String editmacs=editmac.getText().toString();
Toast.makeTest(getApplicationContext(), "Value to insert = " + editmacs, Toast.LENGTH_SHORT).show();
db.insertrow(editmacs);

如果您获得了预期的值(value),请告诉我。如果不是(这是我的猜测),那可能是因为您从错误的 TextView 中读取了文本值。

你确定 editmac 从右 View 正确初始化了吗?

关于android - 单击按钮时插入sqlite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8503541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com