无法将数据写入 SQLite 数据库 Android Studio (Java)
Can't write data into SQLite database Android Studio (Java)
我正在尝试将数据保存到 sqlite 数据库中,我环顾四周,但助手的结构总是这样,我无法找出问题所在。我没有得到任何异常,只是不可能将数据写入 db
public class DBhelper extends SQLiteOpenHelper {
private static final String QR_TABLE = "QR_TABLE";
private static final String ID = "COLUMN_ID";
private static final String C_TEXT = "COLUMN_TEXT";
private static final String C_DATE = "COLUMN_DATE";
private static final String DB_NAME = "qreader.db";
public DBhelper(Context context) {
super(context, DB_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String createTableStatement = "CREATE TABLE " + QR_TABLE + " (" + ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + C_TEXT + " TEXT, "+ C_DATE + "TEXT)";
db.execSQL(createTableStatement);
}
public boolean addRow(String text, String date){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(C_TEXT, text);
cv.put(C_DATE, date);
long result = db.insert(QR_TABLE, null, cv);
db.close();
if(result == -1){
return false;
}
return true;
}
这是 MainActivity 文件
public class MainActivity extends AppCompatActivity {
protected static TextView tvresult;
private DBhelper db;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(this, "NOT DELETED", Toast.LENGTH_SHORT).show();
db = new DBhelper(this);
Boolean res;
for(int i=0; i<30; i++){
res = db.addRow("Prova", "10");
if(res)
Log.w("myapp", "Added");
}
Log.w("App", db.getValues().toString());
...
在我的日志中,我看到 getValues() 的结果为空,因此数据库未填充,并且“已添加”消息永远不会发送到 logcat。
尝试以下查询并重新安装您的应用程序
String createTableStatement = "CREATE TABLE " + QR_TABLE + "(" + ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + C_TEXT + " TEXT, " + C_DATE + " TEXT" +")";
使用 insertOrThrow()
而不是 insert()
以获得有用的异常消息。
可能说 COLUMN_DATE
不存在,原因是 onCreate()
中缺少 space:C_DATE + "TEXT)"
应该是 C_DATE + " TEXT)"
.添加 space 后,您可以卸载您的应用程序以使用更新后的架构重新创建数据库文件。
我正在尝试将数据保存到 sqlite 数据库中,我环顾四周,但助手的结构总是这样,我无法找出问题所在。我没有得到任何异常,只是不可能将数据写入 db
public class DBhelper extends SQLiteOpenHelper {
private static final String QR_TABLE = "QR_TABLE";
private static final String ID = "COLUMN_ID";
private static final String C_TEXT = "COLUMN_TEXT";
private static final String C_DATE = "COLUMN_DATE";
private static final String DB_NAME = "qreader.db";
public DBhelper(Context context) {
super(context, DB_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String createTableStatement = "CREATE TABLE " + QR_TABLE + " (" + ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + C_TEXT + " TEXT, "+ C_DATE + "TEXT)";
db.execSQL(createTableStatement);
}
public boolean addRow(String text, String date){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(C_TEXT, text);
cv.put(C_DATE, date);
long result = db.insert(QR_TABLE, null, cv);
db.close();
if(result == -1){
return false;
}
return true;
}
这是 MainActivity 文件
public class MainActivity extends AppCompatActivity {
protected static TextView tvresult;
private DBhelper db;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toast.makeText(this, "NOT DELETED", Toast.LENGTH_SHORT).show();
db = new DBhelper(this);
Boolean res;
for(int i=0; i<30; i++){
res = db.addRow("Prova", "10");
if(res)
Log.w("myapp", "Added");
}
Log.w("App", db.getValues().toString());
...
在我的日志中,我看到 getValues() 的结果为空,因此数据库未填充,并且“已添加”消息永远不会发送到 logcat。
尝试以下查询并重新安装您的应用程序
String createTableStatement = "CREATE TABLE " + QR_TABLE + "(" + ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + C_TEXT + " TEXT, " + C_DATE + " TEXT" +")";
使用 insertOrThrow()
而不是 insert()
以获得有用的异常消息。
可能说 COLUMN_DATE
不存在,原因是 onCreate()
中缺少 space:C_DATE + "TEXT)"
应该是 C_DATE + " TEXT)"
.添加 space 后,您可以卸载您的应用程序以使用更新后的架构重新创建数据库文件。