Android:SQLiteConstraintException:错误代码19:约束失败

Android:SQLiteConstraintException:错误代码19:约束失败,第1张

概述我在SO中检查了其他示例,我搜索了很多,没有什么对我有用.数据库文件为this(建议编辑后).错误E/Database(274):android.database.sqlite.SQLiteConstraintException:errorcode19:constraintfailedE/Database(274):atandroid.database.sqlite.SQLiteStatement.native_

我在SO中检查了其他示例,我搜索了很多,没有什么对我有用.数据库文件为this(建议编辑后).

错误

E/Database(274): androID.database.sqlite.sqliteConstraintException: error code 19: constraint FailedE/Database(274):    at androID.database.sqlite.sqliteStatement.native_execute(Native Method)E/Database(274):    at androID.database.sqlite.sqliteStatement.execute(sqliteStatement.java:55)E/Database(274):    at androID.database.sqlite.sqliteDatabase.insertWithOnConflict(sqliteDatabase.java:1549)E/Database(274):    at androID.database.sqlite.sqliteDatabase.insert(sqliteDatabase.java:1410)E/Database(274):    at com.example.nycgasstationhunter.userRegister.onClick(userRegister.java:51)E/Database(274):    at androID.vIEw.VIEw.performClick(VIEw.java:2408)E/Database(274):    at androID.vIEw.VIEw$PerformClick.run(VIEw.java:8816)E/Database(274):    at androID.os.Handler.handleCallback(Handler.java:587)E/Database(274):    at androID.os.Handler.dispatchMessage(Handler.java:92)E/Database(274):    at androID.os.Looper.loop(Looper.java:123)E/Database(274):    at androID.app.ActivityThread.main(ActivityThread.java:4627)E/Database(274):    at java.lang.reflect.Method.invokeNative(Native Method)E/Database(274):    at java.lang.reflect.Method.invoke(Method.java:521)E/Database(274):    at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)E/Database(274):    at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:626)E/Database(274):    at dalvik.system.NativeStart.main(Native Method)

import androID.os.Bundle;import androID.vIEw.VIEw;import androID.Widget.button;import androID.Widget.EditText;import androID.Widget.Toast;import androID.app.Activity;import androID.content.ContentValues;import androID.content.Context;import androID.content.Intent;import androID.database.sqlite.sqliteDatabase;public class userRegister extends Activity{//databasesqliteDatabase db;DBHelper dbhelper;Context ourContext;ContentValues cv; public voID onCreate (Bundle savedInstanceState){    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_user_register);//database   dbhelper=new DBHelper(this); db=dbhelper.getWritableDatabase(); cv=new ContentValues();//editTextfinal EditText userEdit=(EditText)  findVIEwByID(R.ID.userEdit);final EditText emailEdit=(EditText) findVIEwByID(R.ID.emailEdit);final EditText passwordEdit=(EditText)  findVIEwByID(R.ID.passwordEdit);final EditText retypePassEdit=(EditText) findVIEwByID(R.ID.retypePassEdit);//Register button    button regbutton = (button) findVIEwByID(R.ID.regbutton);      regbutton.setonClickListener(new VIEw.OnClickListener() {        public voID onClick(VIEw v) {    //string    final String username=userEdit.getText().toString();    final String emailAddress=emailEdit.getText().toString();    final String password=passwordEdit.getText().toString();    final String retypePassword=retypePassEdit.getText().toString();         if (username.length()!=0){            if (emailAddress.length()!=0){              if (password.length()!=0){                 if (retypePassword.equals(password)){                   //save in DB                    cv.put(DBHelper.USER, username);                    cv.put(DBHelper.EMAIL,emailAddress);                    cv.put(DBHelper.PASSWORD, retypePassword);                     db.insert(DBHelper.USER_table, null, cv);                    Intent intent = new Intent (userRegister.this,Profile.class);                         startActivity(intent);               }                 else                      Toast.makeText(userRegister.this,"Password mismatch", Toast.LENGTH_SHORT).show();             }              else                      Toast.makeText(userRegister.this,"InvalID password", Toast.LENGTH_SHORT).show();        }            else                  Toast.makeText(userRegister.this,"InvalID email", Toast.LENGTH_SHORT).show();    }         else              Toast.makeText(userRegister.this,"InvalID user name", Toast.LENGTH_SHORT).show(); }});}}

当我插入信息并按下regbutton时,它会将我发送到Profile活动.数据库中没有保存信息.我不明白LogCat中的错误,我该如何解决?为什么数据库中什么都没有? (我使用SQLite Database Browser来检查数据.)谢谢

解决方法:

sqliteConstraintException错误表示违反了完整性约束.

从您的Create table sql命令我认为第一个问题是您的主键.它应该声明为自动增量

更改字符串createDB:

public final String createDB="create table "+USER_table+"("                    + C_ID + " integer primary key autoincrement, "                    + USER + " text not null,"                      + EMAIL + " text not null,"                     + PASSWORD + " text not null,"                     + TIME + " text not null);";  

此外,所有字段都声明为非null,您应该测试retypePassword是否为null,并且您必须将值设置为字段TIME.

编辑

为了使自动增量生效,需要增加数据库版本值.
在DBHelper类中,更改DATABASE_VERSION = 1;到DATABASE_VERSION = 2;

总结

以上是内存溢出为你收集整理的Android:SQLiteConstraintException:错误代码19:约束失败全部内容,希望文章能够帮你解决Android:SQLiteConstraintException:错误代码19:约束失败所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1114720.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存