数据库没有创建

时间:2012-03-23 14:10:08

标签: android sqlite

我正在创建一个这样的数据库:

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

我遇到异常:无法打开数据库文件...

我做错了什么?

4 个答案:

答案 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实现为数据库的完整路径。