这个错误是什么意思? 我正在尝试将日期插入 SQLite 数据库
01-01 12:25:12.625: E/Database(412): Error inserting event_id=4 end_date=03/01/3912 12:27:38 PM event_title=test test test event_body=test test test test test test test test location=Gaza start_date=01/01/3912 12:24:38 PM
01-01 12:25:12.625: E/Database(412): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
01-01 12:25:12.625: E/Database(412): at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
01-01 12:25:12.625: E/Database(412): at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:61)
01-01 12:25:12.625: E/Database(412): at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1582)
01-01 12:25:12.625: E/Database(412): at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1426)
01-01 12:25:12.625: E/Database(412): at com.android.dataset.DatabaseHelper.insertAppointment(DatabaseHelper.java:74)
01-01 12:25:12.625: E/Database(412): at com.android.uis.CreateAppointmentActivity$3.onClick(CreateAppointmentActivity.java:83)
01-01 12:25:12.625: E/Database(412): at android.view.View.performClick(View.java:2485)
01-01 12:25:12.625: E/Database(412): at android.view.View$PerformClick.run(View.java:9080)
01-01 12:25:12.625: E/Database(412): at android.os.Handler.handleCallback(Handler.java:587)
01-01 12:25:12.625: E/Database(412): at android.os.Handler.dispatchMessage(Handler.java:92)
01-01 12:25:12.625: E/Database(412): at android.os.Looper.loop(Looper.java:130)
01-01 12:25:12.625: E/Database(412): at android.app.ActivityThread.main(ActivityThread.java:3683)
01-01 12:25:12.625: E/Database(412): at java.lang.reflect.Method.invokeNative(Native Method)
01-01 12:25:12.625: E/Database(412): at java.lang.reflect.Method.invoke(Method.java:507)
01-01 12:25:12.625: E/Database(412): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-01 12:25:12.625: E/Database(412): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-01 12:25:12.625: E/Database(412): at dalvik.system.NativeStart.main(Native Method)
01-01 12:25:12.685: D/dalvikvm(412): GREF has increased to 201
您在列中指定了一些未满足的约束。它可能是您尝试插入重复项的唯一键列
您已将列设置为唯一键或主键,并尝试在该列中输入重复值。
package com.example.studentmanagement;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private EditText editTextRollNo, editTextName, editTextMarks;
private Button buttonAdd, buttonDelete, buttonUpdate, buttonView;
private TextView textViewStudents;
private SQLiteDatabase database;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTextRollNo = findViewById(R.id.editTextRollNo);
editTextName = findViewById(R.id.editTextName);
editTextMarks = findViewById(R.id.editTextMarks);
buttonAdd = findViewById(R.id.buttonAdd);
buttonDelete = findViewById(R.id.buttonDelete);
buttonUpdate = findViewById(R.id.buttonUpdate);
buttonView = findViewById(R.id.buttonView);
textViewStudents = findViewById(R.id.textViewStudents);
database = openOrCreateDatabase("StudentDB", MODE_PRIVATE, null);
database.execSQL("CREATE TABLE IF NOT EXISTS student (roll_no VARCHAR primary key, name VARCHAR, marks VARCHAR)");
buttonAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addStudent();
}
});
buttonDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
deleteStudent();
}
});
buttonUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateStudent();
}
});
buttonView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
viewStudents();
}
});
}
private void addStudent() {
String rollNo = editTextRollNo.getText().toString().trim();
String name = editTextName.getText().toString().trim();
String marks = editTextMarks.getText().toString().trim();
ContentValues values = new ContentValues();
values.put("roll_no", rollNo);
values.put("name", name);
values.put("marks", marks);
long result = database.insert("student", null, values);
if (result != -1) {
Toast.makeText(this, "Student added successfully", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Failed to add student", Toast.LENGTH_SHORT).show();
}
}
private void deleteStudent() {
String rollNo = editTextRollNo.getText().toString().trim();
int result = database.delete("student", "roll_no=?", new String[]{rollNo});
if (result > 0) {
Toast.makeText(this, "Student deleted successfully", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Failed to delete student", Toast.LENGTH_SHORT).show();
}
}
private void updateStudent() {
String rollNo = editTextRollNo.getText().toString().trim();
String name = editTextName.getText().toString().trim();
String marks = editTextMarks.getText().toString().trim();
ContentValues values = new ContentValues();
values.put("name", name);
values.put("marks", marks);
int result = database.update("student", values, "roll_no=?", new String[]{rollNo});
if (result > 0) {
Toast.makeText(this, "Student updated successfully", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Failed to update student", Toast.LENGTH_SHORT).show();
}
}
private void viewStudents() {
Cursor cursor = database.rawQuery("SELECT * FROM student", null);
if (cursor.getCount() == 0) {
Toast.makeText(this, "No students found", Toast.LENGTH_SHORT).show();
return;
}
StringBuilder stringBuilder = new StringBuilder();
while (cursor.moveToNext()) {
String rollNo = cursor.getString(0);
String name = cursor.getString(1);
String marks = cursor.getString(2);
stringBuilder.append("Roll No: ").append(rollNo).append(", Name: ").append(name).append(", Marks: ").append(marks).append("\n");
}
textViewStudents.setText(stringBuilder.toString());
}
}