2012-03-23 50 views
0

我创造这样的数据库:数据库还没有生成

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; 
     } 

我得到一个异常:无法打开数据库文件...

我在做什么错?

+1

发布完整堆栈跟踪。 – kosa 2012-03-23 14:11:55

+0

请在logcat中发布错误 – Triode 2012-03-23 14:15:34

+0

无法打开错误消息的数据库文件 – opc0de 2012-03-23 14:18:15

回答

1

你的数据库是在错误的地方: “mydata.db中” 是指你的Databasefile是根:(路径:/mydata.db)。您的应用程序无法写入根文件夹。代替 尝试context.getFilesDir() + "/mydata.db"

在一个命令:

private DatabaseHelper mDbHelper; 
private SQLiteDatabase mDb; 
private final Context mCtx; 

mDbHelper = new DatabaseHelper(mCtx); 
mDb = mDbHelper.getWritableDatabase(); 

,使您的数据库可写

我的建议是要经过:

SQLiteDatabase db = openOrCreateDatabase(context.getFilesDir()"/mydata.db",SQLiteDatabase.CREATE_IF_NECESSARY,null); 
1

您的表创建查询看起来不太好。做到这一点,如下:

"CREATE TABLE IF NOT EXISTS vars 
(id INTEGER PRIMARY KEY AUTOINCREMENT, 
varname TEXT, 
varvalue TEXT);" 
1

,我可以看到你在插入数据的varName和varValues不是id.Here ID是主键(这意味着它不能为null,副本)。所以,你必须输入值因为你不能留下空白,你也可以去AUTOINCREMENT。

尝试是这样的:

db.execSQL("CREATE TABLE IF NOT EXISTS vars (id INTEGER PRIMARY KEY AUTOINCREMENT ASC, varname,varvalue);"); 
+0

我在sql sintax中没有得到任何异常 – opc0de 2012-03-23 14:21:29

+0

您是否尝试过它,请先试试它。 – 2012-03-23 14:23:53

0

你需要声明是这样打开的数据库http://developer.android.com/resources/tutorials/notepad/index.html

要了解有关SQLiteDataBases的更多信息,那里哟你会找到一个名为notesDbAdapter的类,你可以用它作为基础,在那里你会找到一个打开数据库的open()类。

在其他情况下使用openDataBase()方法需要在设备上找到DB的路径,并将mydata.db实现为DB的完整路径。

相关问题