sqlite创建的时候没问题,插入的时候没有反应,能运行,也不报错。
在DDMS里导出那个db文件查看,里面有创建的表,但是没有插入的数据。创建表public void onCreate(SQLiteDatabase db){
String sql="Create table "+TABLE_NAME+"("+BaseColumns._ID+" integer primary key autoincrement,"
        +FIRM_NAME+" char(50),"+FIRM_TIME+" char(50),"+FIRM_ADDRESS+" char(100), "+FIRM_CONTROLLER+" char(50),"+CONTROLLER_PHONE+" char(50),"+CONTACT_PEOPLE+" char(50),"+CONTACT_PHONE+" char(50));";

//String sql="Create table "+TABLE_NAME+"("+BaseColumns._ID+" integer primary key autoincrement,"
 //         + FIRM_NAME + " text );";

db.execSQL(sql);
// initDatabase(db);
         }
insert
  public static void InsertFirmInfo()  
     {  
    
  //String name="FIRM_INFO";
  //String f_id="firm_id";
      try
      {
      //String sql="insert into firm_info values('"+"null',"+"'"+PeActivity.firm_name+"','"+PeActivity.firm_time+"'," +
       //    "'"+PeActivity.firm_address+"','"+PeActivity.firm_controller+"','"+PeActivity.controller_phone+"'," +
       //   "'"+PeActivity.contact_people+"','"+PeActivity.contact_phone+"');";
          dbUtil.getWritableDatabase();
      ContentValues v = new ContentValues();
          v.put("firm_name", PeActivity.firm_name);
          v.put("firm_time", PeActivity.firm_time);
          v.put("firm_address", PeActivity.firm_address);
          v.put("firm_controller", PeActivity.firm_controller);
          v.put("controller_phone", PeActivity.controller_phone);
          v.put("contact_people", PeActivity.contact_people);
          v.put("contact_phone", PeActivity.contact_phone);
         
         
      db.insertOrThrow("firm_info",null,v);
       // String sql= "insert into firm_info(firm_name,firm_time,firm_address,firm_controller,controller_phone,contact_people,contact_phone) values(?,?,?,?,?,?,?)";
       // db.execSQL(sql, new Object[]{mFirm_info.getName(),FIRM_INFO.getTime(),FIRM_INFO.getAdd(),FIRM_INFO.getController(),FIRM_INFO.getControllerPhone(),FIRM_INFO.getContactPeople(),FIRM_INFO.getContactPhone()});
      }
  catch(Exception e)
  {
  e.printStackTrace();
  }
     }

解决方案 »

  1.   

    能说的具体一点吗?什么是commit?
      

  2.   

    好像不是db.commit();的问题你的数据库貌似没有打开耶,你插什么东西进去?你把dbUtil.getWritableDatabase(),改成这样:db= dbUtil.getWritableDatabase();
    或者你用SQL语句插入试下。我一般都写sql语句插入String sql = "insert into tableName (periodNumber) values( '123' ) ";
    db.execSQL(sql);
      

  3.   

    sql 插入语句有没有完全正确?
      

  4.   


    嗯,我后来有改成db = dbUtil.getWritableDatabase();也没有反应。
    一开始我也是用sql语句的,你看我注释里面的那些,也没有反应。
    所以就感觉很诡异,完全不知道哪里出问题了
      

  5.   

    正确的。我用firefox的sqlite Manager打开那个表,然后用那个执行这句sql语句,结果是正确的。
      

  6.   

    嗯?加了db.commit()显示错误啊
      

  7.   

    看下LOG报什么异常,异常不是错误,里面估计会有一个黄色的,xxxxException的东西,发出来看看
      

  8.   


    05-04 02:24:55.090: I/System.out(538): mCursor = android.database.sqlite.SQLiteCursor@40fa63e8
    05-04 02:24:55.101: I/System.out(538): c = android.database.sqlite.SQLiteCursor@40fa63e8
    05-04 02:24:55.140: D/dalvikvm(538): GC_CONCURRENT freed 375K, 10% free 6062K/6727K, paused 4ms+11ms
    05-04 02:24:55.201: E/SQLiteDatabase(538): close() was never explicitly called on database '/data/data/ezpe.pe/databases/pe.db' 
    05-04 02:24:55.201: E/SQLiteDatabase(538): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1943)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1051)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:770)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at ezpe.pe.DatabaseService.getAllItems(DatabaseService.java:115)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at ezpe.pe.Firm_List.onCreate(Firm_List.java:41)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at android.app.Activity.performCreate(Activity.java:4465)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at android.app.ActivityThread.access$600(ActivityThread.java:123)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at android.os.Handler.dispatchMessage(Handler.java:99)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at android.os.Looper.loop(Looper.java:137)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at android.app.ActivityThread.main(ActivityThread.java:4424)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at java.lang.reflect.Method.invokeNative(Native Method)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at java.lang.reflect.Method.invoke(Method.java:511)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    05-04 02:24:55.201: E/SQLiteDatabase(538):  at dalvik.system.NativeStart.main(Native Method)
    05-04 02:24:55.201: E/System(538): Uncaught exception thrown by finalizer
    05-04 02:24:55.220: E/System(538): java.lang.IllegalStateException: Don't have database lock!
    05-04 02:24:55.220: E/System(538):  at android.database.sqlite.SQLiteDatabase.verifyLockOwner(SQLiteDatabase.java:2090)
    05-04 02:24:55.220: E/System(538):  at android.database.sqlite.SQLiteDatabase$1.entryRemoved(SQLiteDatabase.java:2182)
    05-04 02:24:55.220: E/System(538):  at android.database.sqlite.SQLiteDatabase$1.entryRemoved(SQLiteDatabase.java:2178)
    05-04 02:24:55.220: E/System(538):  at android.util.LruCache.trimToSize(LruCache.java:197)
    05-04 02:24:55.220: E/System(538):  at android.util.LruCache.evictAll(LruCache.java:285)
    05-04 02:24:55.220: E/System(538):  at android.database.sqlite.SQLiteDatabase.deallocCachedSqlStatements(SQLiteDatabase.java:2143)
    05-04 02:24:55.220: E/System(538):  at android.database.sqlite.SQLiteDatabase.closeClosable(SQLiteDatabase.java:1126)
    05-04 02:24:55.220: E/System(538):  at android.database.sqlite.SQLiteDatabase.finalize(SQLiteDatabase.java:1914)
    05-04 02:24:55.220: E/System(538):  at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:182)
    05-04 02:24:55.220: E/System(538):  at java.lang.Daemons$FinalizerDaemon.run(Daemons.java:168)
    05-04 02:24:55.220: E/System(538):  at java.lang.Thread.run(Thread.java:856)
      

  9.   


    有时候有,有时候什么log都没有
      

  10.   

       public Cursor getAllItems(int firstResult, int maxResult) {
             SQLiteDatabase db = dbUtil.getWritableDatabase();
             String sql = "select * from firm_info limit ?,?";
             Cursor mCursor = db.rawQuery(sql, new String[]{String.valueOf(firstResult), String.valueOf(maxResult)});
             return mCursor;
         }这个是log里报的getAllItems方法
      

  11.   

    05-04 02:24:55.201: E/SQLiteDatabase(538): close() was never explicitly called on database '/data/data/ezpe.pe/databases/pe.db'  
    05-04 02:24:55.201: E/SQLiteDatabase(538): android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here貌似是数据库或Cursor使用完了没有关闭的原因
      

  12.   

    解决了没?
    在你操作这个insert之前,应该还动作B操作过数据库,你要看下动作B是否占有者数据库资源,锁掉了,那么insert就不能操作了。
    在你insert之前,你可以用方法查看下当前数据库是否是锁着的。
    sqliteReadDB.isDbLockedByCurrentThread()
            sqliteReadDB.isDbLockedByOtherThreads()
    用着两个方法,返回的是波尔型
      

  13.   

    加多一个finaly,在里面把db和数据集给close掉