Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android SQLite中跨三个表创建唯一的列?_Android_Mysql_Sqlite - Fatal编程技术网

如何在Android SQLite中跨三个表创建唯一的列?

如何在Android SQLite中跨三个表创建唯一的列?,android,mysql,sqlite,Android,Mysql,Sqlite,我的SQLite数据库中有三个表。其中存在一个名为uSerialNo的列。我希望那个专栏是独一无二的。它在同一个表中是唯一的。但是如何使它在三个不同的表中独一无二。uSerialNo一旦插入到表中,就不能再重复。怎么做? 我有三个单独的活动要插入到三个表中,但它们基本相同。我的代码是 数据库助手是 public class DatabaseHelper extends SQLiteOpenHelper { public static final String db_name="unitdb";

我的
SQLite
数据库中有三个表。其中存在一个名为
uSerialNo
的列。我希望那个专栏是独一无二的。它在同一个表中是唯一的。但是如何使它在三个不同的表中独一无二。
uSerialNo
一旦插入到表中,就不能再重复。怎么做? 我有三个单独的活动要插入到三个表中,但它们基本相同。我的代码是

数据库助手是

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();
    }
}

我认为这是糟糕的数据库设计。可能您应该添加另一个与其他3相关的表,该表保留所有id。@Zac您建议我创建另一个表,其中包含其他3个表的id?是的,想法是在该表中强制唯一性,然后使用外键连接其他表。好的,谢谢。我将尝试一下。或者,您可以使用三个触发器来检查其他表中的重复项。