gpt4 book ai didi

java - 重复值未插入到 sqlite 数据库中

转载 作者:行者123 更新时间:2023-12-02 02:17:26 25 4
gpt4 key购买 nike

在我的android应用程序中,当我插入重复的值时,它不会在数据库中显示,本质上我所做的是将srting分成两半,并通过insertdata()在一列中插入一个字符串,在第二列中插入第二个字符串insertdata1() 和以下是我的代码

主要

  public  void AddData() {
btnAddData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Spinner dropdown = findViewById(R.id.spinner1);
Spinner dropdown1 = findViewById(R.id.spinner2);
Spinner dropdown2 = findViewById(R.id.spinner3);
Spinner dropdown3 = findViewById(R.id.spinner4);
String join = "-";
String ConcatedString = dropdown.getSelectedItem().toString().concat(join).concat(dropdown1.getSelectedItem().toString());
String ConcatedString1 = dropdown2.getSelectedItem().toString().concat(join).concat(dropdown3.getSelectedItem().toString());
TextView h = (TextView) findViewById(R.id.text_view_id);
h.setText(ConcatedString);
TextView h1 = (TextView) findViewById(R.id.text_view_id1);
h1.setText(ConcatedString1);



String search = h.getText().toString();

myDb.insertData(h.getText().toString());
myDb.insertData1(h1.getText().toString());
Toast.makeText(MainActivity.this,"showing"+search,Toast.LENGTH_LONG).show();

}
}
);
}

数据库助手

public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + TABLE_NAME + " ( name VARCHAR UNIQUE, name1 VARCHAR UNIQUE)");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}

public void insertData(String name) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_2,name);
long result = db.insert(TABLE_NAME,null ,contentValues);


}

public void insertData1(String name1) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(COL_3,name1);
long result = db.insert(TABLE_NAME,null ,contentValues);


}







public Cursor getAllData() {
SQLiteDatabase db = this.getWritableDatabase();
Cursor res = db.rawQuery("select * from " + TABLE_NAME, null);
return res;
}

}

最佳答案

它写在你的表格描述中:

db.execSQL("create table " + TABLE_NAME + " ( name VARCHAR UNIQUE, name1 VARCHAR UNIQUE)");

您的两列是唯一的,因此它们不接受重复的值。您应该删除这两列的 UNIQUE 并添加一个将自动生成的 ID 列。

db.execSQL("CREATE TABLE " + TABLE_NAME + " (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name VARCHAR, name1 VARCHAR)");

您的插入方法有错误。您无法插入 COL_1 或 COL_3,因为它们不是您的列名称。你应该这样写 =>

在你的第一个方法中=>

contentValues.put("name",name);

在你的第二种方法中=>

contentValues.put("name1",name1);

为什么不只编写一种方法来插入数据呢?这样你的数据库中应该只有一行。但也许这就是你想要的?我会写这个方法:

public void insertData(String name, String name1) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("name",name);
contentValues.put("name1",name1);
long result = db.insert(TABLE_NAME,null ,contentValues);
}

关于java - 重复值未插入到 sqlite 数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49093593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com