我是 Android 编程的新手,我对 SQLite 表的创建有点迷茫。所以在我的应用程序中,用户输入三个值(Intime
、OutTime
和Date
) 应保存到 Record.db 下的表“updatedata”
这是我的代码:
public class Inserted_DB{
public static final String dbname="Record" ;
public static final String table="updatedata";
public static final String in="InTime";
public static final String out="OutTime";
public static final String date="Date";
SQLiteDatabase db;
Context ctx;
helper help;
public Inserted_DB(Context ctx)
{
this.ctx=ctx;
help=new helper(ctx);
}
private static class helper extends SQLiteOpenHelper
{
public helper(Context ctx)
{
super(ctx,dbname,null,2);
}
@Override
public void onCreate(SQLiteDatabase db) {
try
{
String sql = "create table "+ table +"(InTime text,OutTime text,Date text)";
db.execSQL(sql);
}
catch(Exception e1)
{
e1.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("DROP TABLE IF EXISTS " + table);
onCreate(db);
}
}
public void update(String In1,String out1,String date1,Context ct)
{
db=help.getWritableDatabase();
ContentValues con=new ContentValues();
con.put(in,In1);
con.put(out,out1);
con.put(date,date1);
db.insert(table,null,con);
db.close();
}}
我只是从另一个类 (Update Tracker) 调用更新函数,代码 fragment 如下:
String in_db=txtTime.getText().toString();
String date_db=txtDate.getText().toString();
String out_db=txtTime2.getText().toString();
Inserted_DB db1=new Inserted_DB(getBaseContext());
db1.update(in_db,out_db,date_db,UpdateTracker.this);
数据库已创建,但表未创建。我使用 DDMS 文件资源管理器导航到相应的路径 data/data/mypackage.com.myapp/databases 并且可以看到创建的数据库。使用 sqlite3当我查询“.databases
”时,它显示数据库名称但是当我查询“.tables”时它是空的。
Updated Snap for DB getting created
我错过了什么?你们能帮我找到解决办法吗!
提前致谢!
最佳答案
我认为问题是因为创建表时的空间
只需替换这个
create table "+ table +" (InTime text,OutTime text,Date text)
代替
create table "+ table +"(InTime text,OutTime text,Date text)
编辑
同时更改数据库名称
public static final String dbname="Record.db";
代替
public static final String dbname="Record" ;
关于android - 未创建 SQlite 表,但在 Android 中创建了数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34564136/