android - Android 3.1 SQLite 数据库不创建表并将字段插入到数据库设备探索监视器?
问题描述
我正在尝试通过 android 3.1 创建 SQLite 数据库。但它不能像下面的代码一样工作。请帮忙谢谢。
主要活动.class
public class MainActivity extends AppCompatActivity { DatabaseHelper myDb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myDb = new DatabaseHelper(this); // this is contact, this is new extension of DatabaseHelper
}
}
DatabaseHelper.class
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "Iters.db";
public static final String TABLE_NAME = "iters_table"; //called onCreate method
public static final String COL_1 = "ID";
public static final String COL_2 = "NAME";
public static final String COL_3 = "SURNAME";
public static final String COL_4 = "MARKS";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
SQLiteDatabase db = this.getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE TABLE_NAME (ID INTEGER PRIMARY KEY AUTOINCREMENT," +
"NAME TEXT," +
"SURNAME TEXT," +
"MARKS INTEGER)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
db.execSQL("DROP TABLE IF EXISTS " +TABLE_NAME);
onCreate(db);
}
}
解决方案
看来您的问题可能是您正在命名表TABLE_NAME而不是iters_table。
您可以使用以下方法纠正此问题:-
db.execSQL("CREATE TABLE " + TABLE_NAME + "(ID INTEGER PRIMARY KEY," +
"NAME TEXT," +
"SURNAME TEXT," +
"MARKS INTEGER)");
- 请注意,我还删除了AUTOINCREMENT关键字,因为您很可能不需要它(ID 列仍将自动生成 1,然后是 2,然后是 3 等(可能)):-
- a)它可能是最被误用的关键字,并且
- b)在性能方面有点昂贵
- 您可能希望阅读SQLite Autoincrement,因为第一句是AUTOINCREMENT 关键字会带来额外的 CPU、内存、磁盘空间和磁盘 I/O 开销,如果不是严格需要,应避免使用。通常不需要它。我相信开销是 8% 到 12% 之间的性能损失(根据What is the overheads of using AUTOINCREMENT for SQLite on Android? )
推荐阅读
- typo3 - Typo3 表单元素“登录表单”不可见
- c# - 使用带有文档配置的 aspnet-api-versioning 库时出错
- python-2.7 - PIL.ImageTk 导入和/或安装错误
- java - 使用 Json Rest Services 从 android 发送二进制文件 jpg
- python - 机器学习:根据先前的数字预测一组数字
- python - Gevent,Flask应用程序在流式传输视频时卡住,直到客户端断开连接
- api - Jmeter 性能测试 - 使用 JSR223 采样器从 API 和 MongoDB 获取的结果计数差异
- python - 如果输入无效,则重新打印选项
- java - Web 应用程序 java 互联网的 Web 服务 Intranet 调用
- sql-server - SQL Server(不是使用 INTO 的 mysql) - 使用查询而不是手动导出功能保存到 .csv