2014-02-20 29 views
-1

我正在試圖製作一個簡單的界面,用於查詢用戶的用戶名。它發現它是否已經存在於SQLite數據庫中。在logCat中發現創建的數據庫丟失

我創建了數據庫,但LogCat告訴我,我在查詢中要求的表不存在(No such table)。

這就是我創建了簡單的數據庫類DataBaseHelper

  package com.example.cinemaodeon; 

     import android.content.Context; 
    import android.database.sqlite.SQLiteDatabase; 
    import android.database.sqlite.SQLiteOpenHelper; 

     public class DatabaseHelper extends SQLiteOpenHelper { 
      private static final String DB_NAME = "nome_db"; 
      private static final int DB_VERSION = 1; 
      public DatabaseHelper(Context context) { 
     super(context, DB_NAME, null, DB_VERSION); 
     } 
    @Override 
    public void onCreate(SQLiteDatabase db) { 
    // Creazione delle tabelle 
     String sql = ""; 

     sql += "DROP TABLE IF EXISTS T_UTENTI"; 
     db.execSQL(sql); 

      sql =""; 
      sql += "CREATE TABLE T_UTENTI("; 
     sql += " _id_user INTEGER PRIMARY KEY,"; 
     sql += " username TEXT NOT NULL"; 
     sql += " password TEXT NOT NULL"; 
     sql += ")";   
     db.execSQL(sql); 
     sql = ""; 
     sql +="COMMIT"; 
     db.execSQL(sql); 
       } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // Aggiornamento delle tabelle 
    } 
     } 

我想用一個按鈕的點擊查詢閱讀。 下面是該活動的代碼:

package com.example.cinemaodeon; 
     import...... 

    public class Main extends Activity { 

private DatabaseHelper DbHelper; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    DbHelper = new DatabaseHelper(this); 

    setContentView(R.layout.layout_main); 

    final Toast toast = Toast.makeText(this, 
      "Il nome utente non è presente!!! registra un nuovo nome utente!", 
      Toast.LENGTH_LONG); 
    final Toast toast2 = Toast.makeText(this, 
      "Il nome utente è già presente!!! Accedi con questo nome utente!", 
      Toast.LENGTH_LONG); 


    Button btnGO = (Button) findViewById(R.id.main_btnentra); 
    btnGO.setOnClickListener(new OnClickListener(){  
     @Override  
     public void onClick(View arg0) {  

      EditText editusername =(EditText) findViewById(R.id.main_editusername); 
      final String username = editusername.getText().toString(); 

下面的代碼是返回錯誤No such table T_UTENTI查詢。

  SQLiteDatabase db = DbHelper.getReadableDatabase(); 
      String[] columns = {"username"}; 
      Cursor cursor = db.query("T_UTENTI", columns, null, null, null, null, null); 

      boolean ctrl=false; 

      while (cursor.moveToNext()) { 
       if (username==cursor.getString(0)){ 
        ctrl=true; 
        Intent openProgrammazione = new Intent(Main.this,Programmazione.class); 
        startActivity(openProgrammazione); 
        break; 
       } 
      }   
      if (ctrl==false){ 
      toast.show(); 
      } 

       } 
      });  


    Button btnReg = (Button) findViewById(R.id.main_btnregistra); 
    btnReg.setOnClickListener(new OnClickListener(){  
     @Override  
     public void onClick(View arg0) {  

      EditText editusername =(EditText) findViewById(R.id.main_editusername_registra); 
      final String username = editusername.getText().toString(); 

      SQLiteDatabase db = DbHelper.getReadableDatabase(); 
      String[] columns = { "username" }; 
      Cursor cursor = db.query("T_UTENTI", columns, null, null, null, null, null); 

      boolean ctrl=false; 

      while (cursor.moveToNext()) { 
       if (username==cursor.getString(0)){ 
        toast2.show(); 
        ctrl=true; 
        break; 
       } 

      }   
      if (ctrl==false){ 
      WriteUser(username); 

      Intent openProgrammazione = new Intent(Main.this,Programmazione.class); 
      startActivity(openProgrammazione); 
      } 
      } 

    });  


} 

    protected void WriteUser(String user){ 
      SQLiteDatabase dbw = DbHelper.getWritableDatabase(); 
      ContentValues values = new ContentValues(); 
      values.put("username", user); 
      values.put("password","0000"); 
      @SuppressWarnings("unused") 
      long id = dbw.insert("T_UTENTI", null, values); 


     } 

回答

1

你這裏忘了一個逗號(中的onCreate):

sql += " username TEXT NOT NULL"; 

它應該是:

sql += " username TEXT NOT NULL, "; 

由於SQL命令是錯誤的,不創建表
沒有表格,你會得到錯誤「沒有這樣的表格T_UTENTI」

相關問題