2016-12-14 15 views
-1

@After插入我。如何才能解決這個問題一排數據庫再次創造,我可以檢查數據庫的時間爲Android設備監控 @After插入一行數據庫再次創造。我該如何解決這個問題,我可以檢查數據庫是Android設備監控 @After插入一行數據庫再次創造我。怎麼能解決這個問題,我可以檢查數據庫是Android設備監控每一個創建數據庫中插入一行後,機器人SQL

public class DatabaseOperations extends SQLiteOpenHelper { 

public static final int Database_version = 2; 

public static final String Tag = DatabaseOperations.class.getSimpleName(); 

private static final String SQL_CREATE_ENTRIES = 
     "CREATE TABLE " + TableData.TableInfo.TABLE_NAME + " (" + 
       TableData.TableInfo.USER_ID + " INTEGER PRIMARY KEY," + 
       TableData.TableInfo.USER_PASS +" TEXT "+ "," + 
       TableData.TableInfo.USER_EMAIL +" TEXT "+ ");"; 

public DatabaseOperations(Context context) { 
super(context, TableData.TableInfo.DATABASE_NAME, null,Database_version); 
    Log.d("Tag", "Database created"); 
} 

@Override 
public void onCreate(SQLiteDatabase sdb) { 
    sdb.execSQL(SQL_CREATE_ENTRIES); 
    Log.d("Tag", "Table created"); 

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

} 

public void putInformation(DatabaseOperations drop, String name, String pass, String email) { 
    SQLiteDatabase SQ = drop.getWritableDatabase(); 
    ContentValues cv = new ContentValues(); 
    cv.put(TableData.TableInfo.USER_ID, name); 
    cv.put(TableData.TableInfo.USER_PASS, pass); 
    cv.put(TableData.TableInfo.USER_EMAIL, email); 
    long k = SQ.insert(TableData.TableInfo.TABLE_NAME, null, cv); 
    Log.d("Tag", "inert a row"); 
} 

public Cursor getInformation(DatabaseOperations dop) { 
    SQLiteDatabase SQ = dop.getReadableDatabase(); 
    String[] coloumns = {TableData.TableInfo.USER_ID, TableData.TableInfo.USER_PASS, TableData.TableInfo.USER_EMAIL}; 
    Cursor CR = SQ.query(TableData.TableInfo.TABLE_NAME, coloumns, null, null, null, null, null); 
    return CR; 
} 
} 

RegisterActivity

public class RegisterActivity extends AppCompatActivity { 


    EditText USER_NAME, USER_PASS, CON_PASS, USER_EMAIL; 
    String user_name, user_pass, con_pass, user_email; 
    Button REG; 
    Context ctx = this; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_register); 

     USER_NAME = (EditText) findViewById(R.id.reg_user); 
     USER_PASS = (EditText) findViewById(R.id.reg_pass); 
     CON_PASS = (EditText) findViewById(R.id.con_pass); 
     USER_EMAIL = (EditText) findViewById(R.id.reg_email); 
     REG = (Button) findViewById(R.id.user_reg); 
     REG.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       user_name = USER_NAME.getText().toString(); 
       user_pass = USER_PASS.getText().toString(); 
       con_pass = CON_PASS.getText().toString(); 
       user_email = USER_EMAIL.getText().toString(); 
       if (!(user_pass.equals(con_pass))) { 
        Toast.makeText(getBaseContext(), "Password are not matching", Toast.LENGTH_LONG).show(); 
        USER_NAME.setText(""); 
        USER_PASS.setText(""); 
        CON_PASS.setText(""); 
        USER_EMAIL.setText(""); 
       } else { 
        DatabaseOperations DB = new DatabaseOperations(ctx); 
        DB.putInformation(DB, user_name, user_pass, user_email); 
        Toast.makeText(getBaseContext(), "Registration is suessful", Toast.LENGTH_LONG).show(); 
        finish(); 
       } 
      } 
     }); 


    } 
} 
+1

你爲什麼重複自己這麼多?我不明白你爲什麼這麼重複自己。請不要重複自己這麼多。 – Kritner

+0

請不要在您的問題中一遍又一遍地發送一個句子。如果Stackoverflow告訴你應該爲你的問題添加更多的文本,那麼你應該添加更多和更詳細的問題描述。再次重複相同的句子不是要走的路。 –

+0

@Kritner,這樣問題就被接受了。如果你的文本太少,代碼太多,那麼SO不接受這個問題 – Aelop

回答

2

這是因爲您每次插入行時都要創建表格。爲了解決這個問題,你需要改變創建表查詢「CREATE TABLE 'TABLE_NAME' IF NOT EXISTS」「IF NOT EXISTS」將限制系統在創建一次後再次創建數據庫。

0

要調用每次創建新表,您創建的DatabaseOperations一個實例 - 爲您的SQL語句「生成」

修改SQL_CREATE_ENTRIES喜歡的東西下面

private static final String SQL_CREATE_ENTRIES = 
     "CREATE TABLE IF NOT EXISTS " + TableData.TableInfo.TABLE_NAME + " (" + 
       TableData.TableInfo.USER_ID + + " integer primary key autoincrement, "+ 
       TableData.TableInfo.USER_PASS +" TEXT "+ "," + 
       TableData.TableInfo.USER_EMAIL +" TEXT "+ ");"; 

編輯 1 )我已經更新查詢,包括自動增量的主鍵

2)在您的onUpgrade方法添加行

db.execSQL("DROP TABLE IF EXISTS " + TableData.TableInfo.TABLE_NAME); 

這會在您更改數據庫版本時刪除表格。

接下來,通過1更新的版本,以3

重新運行應用程序,它會重建數據庫表。

+0

謝謝,但它仍然沒有解決問題 5828-15828/com.example.imros.foodsafety D /標記:創建數據庫 15828-15828/com.example.imros.foodsafety D /標記:創建表 15828 -15828/com.example.imros.foodsafety d /標籤:惰性行 15828-15828/com.example.imros.foodsafety I /的Adreno200-EGLSUB::格式RGBA_8888。 I/Adreno200-EGLSUB::格式RGBA_8888。 15828-15828/com.example.imros。食品安全D /標籤:創建數據庫 15828/com.example.imros.foodsafety D /標籤:惰性行 – Mohammad

+0

請參閱上面的編輯。 :) – Zain

相關問題