2012-07-29 94 views
0

我得到一個表未找到錯誤。我用Google搜索了很多,但無法找到錯誤的根源Sqlite沒有這樣的表錯誤

public class update extends Activity{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.update); 
     Button upbtn=(Button)findViewById(R.id.upbutton); 
     final EditText detedit=(EditText)findViewById(R.id.upedit); 
     final EditText amtedit=(EditText)findViewById(R.id.editText1); 
     stdb obj=new stdb(this); 
     final SQLiteDatabase dobj=obj.getWritableDatabase(); 
     upbtn.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      String setdet,setamt; 
      setdet=detedit.getText().toString(); 
      setamt=amtedit.getText().toString(); 
      //try{ 

      String insertQuery = "INSERT INTO " +stdb.tname+" (" + stdb.details+" , "+stdb.amt+") VALUES("+setdet+" , "+setamt+");"; 

      //Log.e("sql",insertQuery); 

      dobj.execSQL(insertQuery); 
      //} 
      //catch(SQLException e){ 
      // Log.e("sqlite",e.toString()); 

      //} 

     } 
    }); 


    } 

} 

SQLiteOpenHelper:

public class stdb extends SQLiteOpenHelper { 

    private static final int version = 1; 
    public static final String dname = "statments.db"; 
    public static final String tname="transactions"; 
    public static final String sid = "sno"; 
    public static final String details = "details"; 
    public static final String amt = "amount"; 

    public stdb(Context context) { 
     super(context, dname, null, version); 
     // TODO Auto-generated constructor stub 
    } 


    @Override 
    public void onCreate(SQLiteDatabase db) { 
     // TODO Auto-generated method stub 

     String ex="CREATE TABLE " + tname + " (" + sid + " INTEGER PRIMARY KEY AUTOINCREMENT," + details+ " VARCHAR(255),"+amt+" INTEGER);"; 
     Log.e("ex",ex); 

     db.execSQL("CREATE TABLE " + tname + " (" + sid + " INTEGER PRIMARY KEY AUTOINCREMENT," + details+ " VARCHAR(255),"+amt+" INTEGER);"); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

     db.execSQL("DROP TABLE IF EXISTS "+ tname); 
     onCreate(db); 
    } 

} 
+0

@約翰孔德感謝編輯 – dreamer1989 2012-07-29 19:49:24

+0

請參閱此[鏈接](http://www.vogella.com/articles/AndroidSQLite/article.html)來解決您的問題。 – moDev 2012-07-29 19:56:23

回答

1

嘗試遞增的版本號:

private static final int version = 2; 

我猜你改變您的CREATE TABLE聲明在某些時候,但系統將不會自動了解這些更改。更新模式的最簡單方法是將1添加到version

此外

,則不應使用execSQL()INSERT命令,使用插入():

ContentValues initialValues = new ContentValues(); 
initialValues.put(stbd.details, setdet); 
initialValues.put(stbd.amt, setamt); 
dobj.insert(stbd.tname, null, initialValues); 

或者rawQuery():

String insertQuery = "INSERT INTO " +stdb.tname+" (" + stdb.details+" , "+stdb.amt+") VALUES(?, ?);"; 
dobj.rawQuery(insertQuery, new String[] {setdet, setamt}); 
+0

感謝它的工作 – dreamer1989 2012-07-29 20:03:17