如何在Android SQLite中的三个表中创建Unique列?

时间:2015-06-15 04:48:27

标签: android mysql sqlite

我的SQLite数据库中有三个表。其中存在名为uSerialNo的列。我希望该列是唯一的。它在同一张表中是独一无二的。但是如何在三个不同的表中使它独一无二。插入表中的uSerialNo不能再次重复。怎么做? 我有三个单独的活动要插入三个表,但它几乎相同。我的代码是

DatabaseHelper是

public class DatabaseHelper extends SQLiteOpenHelper {
public static final String db_name="unitdb";
public static final int version=1;
Context context;

public DatabaseHelper(Context context){
    super(context, db_name, null, version);
    this.context=context;
}

@Override
public void onCreate(SQLiteDatabase db){
    db.execSQL("CREATE TABLE carTable(userName TEXT UNIQUE, mobileNo INTEGER UNIQUE, address TEXT UNIQUE, uSerialNo INTEGER PRIMARY KEY, uImeiNo integer, uCimiNo INTEGER UNIQUE, uContactNo INTEGER, dealerCode INTEGER, dealerContactNo INTEGER)");
    Toast.makeText(context,"Database Created",Toast.LENGTH_SHORT).show();
    Log.i("dbcreate", "Database Created");
    Log.i("Table Created","Car Tracker Table Created");

    db.execSQL("CREATE TABLE bikeTable(userName TEXT UNIQUE, mobileNo INTEGER UNIQUE, address TEXT UNIQUE, uSerialNo INTEGER PRIMARY KEY, uImeiNo integer, uCimiNo INTEGER UNIQUE, uContactNo INTEGER, dealerCode INTEGER, dealerContactNo INTEGER)");
    Log.i("Table Created", "Bike Tracker Table Created");

    db.execSQL("CREATE TABLE cvTable(userName TEXT UNIQUE, mobileNo INTEGER UNIQUE, address TEXT UNIQUE, uSerialNo INTEGER PRIMARY KEY, uImeiNo integer, uCimiNo INTEGER UNIQUE, uContactNo INTEGER, dealerCode INTEGER, dealerContactNo INTEGER)");
    Log.i("Table Created","CV Tracker Table Created");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    if (oldVersion>=newVersion)
        return;

    if (oldVersion==1){
        Log.d("New Version","Datas can be Upgraded");
    }
    Log.d("Sample Data", "onUpgrade:" + newVersion);
  }
}

使用

完成插入
public void onClick(View v) {
            String strSno=etSno.getText().toString();
            String strImei=etImei.getText().toString();
            String strCimi=etCimi.getText().toString();
            String strDeviceContact=etDeviceContact.getText().toString();
            String strDealerCode=etDealerCode.getText().toString();
            String strDealerNo=etDealerNo.getText().toString();

            if (strSno.equals("")||strImei.equals("")||strCimi.equals("")||strDeviceContact.equals("")||strDealerCode.equals("")||strDealerNo.equals("")){
                show("Error","Please enter All the Fields");
            }else {
                putDatasToDatabase(strSno, strImei, strCimi, strDeviceContact, strDealerCode, strDealerNo);
                show("Success", "Data's Inserted Successfully");
                etSno.setText("");
                etImei.setText("");
                etCimi.setText("");
                etDeviceContact.setText("");
                etDealerCode.setText("");
                etDealerNo.setText("");
            }
 private void putDatasToDatabase(String strSno, String strImei, String strCimi, String strDeviceContact, String strDealerCode, String strDealerNo) {
    databaseHelper=new DatabaseHelper(this);
    SQLiteDatabase db=databaseHelper.getWritableDatabase();
    ContentValues cv=new ContentValues();

    try{
        cv.put("uSerialNo", strSno);
        cv.put("uImeiNo", strImei);
        cv.put("uCimiNo", strCimi);
        cv.put("uContactNO", strDeviceContact);
        cv.put("dealerCode", strDealerCode);
        cv.put("dealerContactNo", strDealerNo);

        db.insert("cvTable", null, cv);
        db.close();
    }catch (SQLiteException e){
        e.printStackTrace();
        Toast.makeText(AddCv.this,"Serial Number Already Entered. Check again and try later",Toast.LENGTH_LONG).show();
    }
}

0 个答案:

没有答案