android中插入日期到SQLite数据库时出错

问题描述 投票:0回答:3

这个错误是什么意思? 我正在尝试将日期插入 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
android sqlite
3个回答
0
投票

您在列中指定了一些未满足的约束。它可能是您尝试插入重复项的唯一键列


0
投票

您已将列设置为唯一键或主键,并尝试在该列中输入重复值。


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

}
© www.soinside.com 2019 - 2024. All rights reserved.