我正在创建一个这样的数据库:
SQLiteDatabase db = openOrCreateDatabase("mydata.db",SQLiteDatabase.CREATE_IF_NECESSARY,null);
try
{
db.execSQL("CREATE TABLE IF NOT EXISTS vars (id INTEGER PRIMARY KEY ASC, varname,varvalue);");
db.execSQL("INSERT INTO vars (varname,varvalue) VALUES (\"user\",\"" + username + "\");");
Log.w("Test", "Am executat sql");
}
catch (SQLiteException e)
{
Log.w("Exceptie", "Acum or niciodata");
}
当我重新启动程序时,我想打开它:
SQLiteDatabase objDb = null;
try
{
objDb = SQLiteDatabase.openDatabase("mydata.db", null, SQLiteDatabase.OPEN_READWRITE);
}
catch(SQLiteException e)
{
//addShortcut();//setShortCut(getApplicationContext(),"GpsRo");
//setContentView(R.layout.main);
Log.w("Exceptie", e.getMessage());
showForm = true;
}
我遇到异常:无法打开数据库文件...
我做错了什么?
答案 0 :(得分:1)
您的表创建查询看起来不太好。请按以下步骤操作:
"CREATE TABLE IF NOT EXISTS vars
(id INTEGER PRIMARY KEY AUTOINCREMENT,
varname TEXT,
varvalue TEXT);"
答案 1 :(得分:1)
正如我可以看到你为varName插入数据而varValues不是为id.Here id是一个主键(这意味着它不能为空并且重复)。所以你必须输入值,你不能把它留空,也你可以去AUTOINCREMENT。
尝试这样的事情:
db.execSQL("CREATE TABLE IF NOT EXISTS vars (id INTEGER PRIMARY KEY AUTOINCREMENT ASC, varname,varvalue);");
答案 2 :(得分:1)
您的数据库位置错误:
“mydata.db”表示您的数据库文件位于root:(Path:/mydata.db)。您的应用无法在根文件夹中写入。
请改为context.getFilesDir() + "/mydata.db"
。
在一个命令中:
SQLiteDatabase db = openOrCreateDatabase(context.getFilesDir()"/mydata.db",SQLiteDatabase.CREATE_IF_NECESSARY,null);
答案 3 :(得分:0)
要打开您的数据库,您需要声明如下内容:
private DatabaseHelper mDbHelper;
private SQLiteDatabase mDb;
private final Context mCtx;
mDbHelper = new DatabaseHelper(mCtx);
mDb = mDbHelper.getWritableDatabase();
使您的数据库可写
我的建议是通过http://developer.android.com/resources/tutorials/notepad/index.html
要了解有关SQLiteDataBases的更多信息,您将找到一个名为notesDbAdapter的类,您可以将其用作基础,在那里您将找到一个打开数据库的open()类。
在其他情况下,要使用openDataBase()方法,您需要在设备上找到数据库的路径,并将mydata.db实现为数据库的完整路径。