2011-02-26 43 views
0

我正在关注Android的SQLiteDatabase教程,并且在这里按下按钮时它可以正常工作,但对于我来说它不适用。我添加了一些尝试方法,看看发生了什么,但它仍然无法正常工作。在这里我的代码:我的代码在访问SQLite数据库时出了什么问题?

public class MyDatabasaDemo extends Activity { 
    private static final String DATABASE_NAME = "JADB.db"; 
    private static final String DATABASE_TABLE = "myTable"; 
    private static final String DATABASE_CREATE = "create table"+ DATABASE_TABLE; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Button butCreate = (Button) findViewById(R.id.myButCreate); 
     Button butAdd = (Button) findViewById(R.id.myButAdd); 
     Button butCount = (Button) findViewById(R.id.myButCount); 
     Button butShow = (Button) findViewById(R.id.myButShow); 

     butCreate.setOnClickListener(new OnClickListener(){ 

      public void onClick(View arg0) { 
       SQLiteDatabase myDB; 
       try{ 
       myDB = openOrCreateDatabase(DATABASE_NAME,Context.MODE_PRIVATE,null); 
       myDB.execSQL(DATABASE_CREATE); 
       myDB.close(); 

       Toast.makeText(getApplicationContext(), "Table Creat", Toast.LENGTH_SHORT).show(); 

       }catch(SQLException e){ 
        Toast.makeText(getApplicationContext(), "SQLException", Toast.LENGTH_SHORT); 

       } 
      } 

     }); 

     butAdd.setOnClickListener(new OnClickListener(){ 

      public void onClick(View arg0) { 
       SQLiteDatabase myDB; 

       myDB = openOrCreateDatabase(DATABASE_NAME,Context.MODE_PRIVATE,null); 

       ContentValues newRow = new ContentValues(); 
       newRow.put("col1", "ok"); 
       myDB.insert(DATABASE_TABLE, null, newRow); 

       myDB.close(); 


       Toast.makeText(getApplicationContext(), "row added", Toast.LENGTH_SHORT).show(); 

      } 

     }); 


     butCount.setOnClickListener(new OnClickListener(){ 

      public void onClick(View arg0) { 
       SQLiteDatabase myDB; 

       myDB = openOrCreateDatabase(DATABASE_NAME,Context.MODE_PRIVATE,null); 

       String[] resultColumns = new String[]{"_id","col1"}; 

     Cursor allRows = myDB.query(DATABASE_TABLE, resultColumns, null, null, null, null, null, null); 

       myDB.close(); 

       Integer c = allRows.getCount(); 

       Toast.makeText(getApplicationContext(), "count: "+c.toString(), Toast.LENGTH_SHORT).show(); 

      } 

     }); 
    } 

数据库创建,但弗里斯特按钮这么想的工作里面的烤面包的消息,所以我想,如果它不是关闭。

thankyou

+0

@ user583713 - 您可以删除不初步认识的代码 - 我不知道哪一个按钮点击收听你所谈论的。 – tpow 2011-02-26 22:14:29

+0

create table语句看起来不正确,它会丢失表关键字和表名之间的空格。 – david 2011-02-26 22:22:32

+0

您应该记录异常消息以获取有关该问题的更多信息。 – david 2011-02-26 22:23:30

回答

1

您试图创建一个没有列的表,然后插入一条记录。你应该改变你的数据库创建SQL:

private static final String COLUMN_ID = "_id"; 
private static final String COLUMN_NAME = "col1"; 
private static final String DATABASE_CREATE = "create table "+ DATABASE_TABLE +" ("+ 
    COLUMN_ID + " integer primary key autoincrement, " + 
    COLUMN_NAME +" text not null" 
    +");"; 
相关问题