Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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
Java 使用android studio在sqlite数据库中插入元组_Java_Android_Sqlite_Android Studio - Fatal编程技术网

Java 使用android studio在sqlite数据库中插入元组

Java 使用android studio在sqlite数据库中插入元组,java,android,sqlite,android-studio,Java,Android,Sqlite,Android Studio,我正在尝试在sqlite数据库中插入一个元组(记录)。它有一个整数主键。但是当我尝试插入时,我得到了一个错误“空对象引用”。 我搜索了很多,但不幸的是,我无法解决与我的案例有关的错误。 请你帮我一下好吗 代码如下: logcat说有一个致命的例外 这就是我创建表的方式。我的sql insert函数工作正常,但我认为我的数据类型有问题 public class AccountHolder_to implements Parcelable { private Integer A_A_ac

我正在尝试在sqlite数据库中插入一个元组(记录)。它有一个整数主键。但是当我尝试插入时,我得到了一个错误“空对象引用”。 我搜索了很多,但不幸的是,我无法解决与我的案例有关的错误。 请你帮我一下好吗

代码如下:

logcat说有一个致命的例外

这就是我创建表的方式。我的sql insert函数工作正常,但我认为我的数据类型有问题

public class AccountHolder_to implements Parcelable {

    private  Integer A_A_accountNumber;
    private  String A_email;
    private  String A_username;
    private  String A_password;
    private  String A_syncedURL;

    private  Demographics_to A_A_patientID;

    public AccountHolder_to () {
        super();
    }

    private AccountHolder_to(Parcel in) {
        super();
        this.A_A_accountNumber= in.readInt();
        this.A_email = in.readString();
        this.A_username = in.readString();
        this.A_password = in.readString();
        this.A_syncedURL = in.readString();

        this.A_A_patientID = in.readParcelable(Demographics_to.class.getClassLoader());

    }

    public int getA_A_accountNumber() {return A_A_accountNumber;}

    public void setA_A_accountNumber(int id) {
        this.A_A_accountNumber = id;
    }

    public String getA_email() {
        return A_email;
    }

    public void setA_email(String email) {
        this.A_email = email;
    }

    public String getA_username() {
        return A_username;
    }

    public void setA_username(String un) {
        this.A_username = un;
    }

    public String getA_password() {
        return A_password;
    }

    public void setA_password(String pw) {
        this.A_password = pw;
    }

    public String getA_syncedURL() {
        return A_syncedURL;
    }

    public void setA_syncedURL(String sr) {
        this.A_syncedURL = sr;
    }

    public Demographics_to getA_A_patientID() {
        return A_A_patientID;
    }

   public void setA_A_patientID(Demographics_to pi) {
       this.A_A_patientID = pi;
   }

    @Override
    public String toString() {
        return "accountHolder_Table [A_accountNumber:" + A_A_accountNumber + ", name:" + A_email
                + ",username:" + A_username + "password:" + A_password
                + "syncedurl:" +A_syncedURL +"patientid:" + A_A_patientID+ "]";
    }

    @Override
    public int describeContents() {
        return 0;
    }
    @Override
    public void writeToParcel(Parcel parcel, int flags) {
        parcel.writeInt(getA_A_accountNumber());
        parcel.writeString(getA_email());
        parcel.writeString(getA_username());
        parcel.writeString(getA_password());
        parcel.writeString(getA_syncedURL());

        parcel.writeParcelable(getA_A_patientID(), flags);
    }

    public static final Parcelable.Creator<AccountHolder_to> CREATOR = new Parcelable.Creator<AccountHolder_to>() {
        public AccountHolder_to createFromParcel(Parcel in) {
            return new AccountHolder_to(in);
        }

        public AccountHolder_to[] newArray(int size) {
            return new AccountHolder_to[size];
        }
    };

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + A_A_accountNumber;
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        AccountHolder_to other = (AccountHolder_to) obj;
        if (A_A_accountNumber != other.A_A_accountNumber)
            return false;
        return true;
    }
}
public class AccountHolder\u实现包裹{
私有整数A_A_accountNumber;
私人字符串A_电子邮件;
私有字符串A_用户名;
私有字符串A_密码;
私有字符串A_syncedURL;
私人的人口统计资料;
公共帐户持有人(u to){
超级();
}
私人账户持有人(包裹寄送){
超级();
这个.A_A_accountNumber=in.readInt();
this.A_email=in.readString();
this.A_username=in.readString();
this.A_password=in.readString();
this.A_syncedURL=in.readString();
this.A_A_patientID=in.readParcelable(Demographics_to.class.getClassLoader());
}
public int getA_A_accountNumber(){返回A_A_accountNumber;}
公共void setA\u A_uaccountnumber(int id){
this.A_A_accountNumber=id;
}
公共字符串getA_email(){
回复一封电子邮件;
}
公共无效setA_电子邮件(字符串电子邮件){
this.A_email=电子邮件;
}
公共字符串getA_username(){
返回一个_用户名;
}
公共无效setA_用户名(字符串un){
this.A_username=un;
}
公共字符串getA_password(){
返回密码;
}
公共无效setA_密码(字符串pw){
this.A_password=pw;
}
公共字符串getA_syncedURL(){
返回一个_syncedURL;
}
公共空集同步(字符串sr){
此.A_syncedURL=sr;
}
公共人口统计数据{
返回一个_A_patientID;
}
公共无效setA_A_patientID(人口统计数据至pi){
this.A_A_patientID=pi;
}
@凌驾
公共字符串toString(){
return“accountHolder\u Table[A\u accountNumber:+A\u A\u accountNumber+”,name:+A\u email
+,用户名:“+A_用户名+”密码:“+A_密码”
+“syncedurl:“+A_syncedurl+”patientid:“+A_A_patientid+”]”;
}
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效writeToParcel(Parcel-Parcel,int标志){
parcel.writeInt(getA_A_accountNumber());
parcel.writeString(getA_email());
parcel.writeString(getA_username());
parcel.writeString(getA_password());
writeString(getA_syncedURL());
parcel.writeParcelable(getA_A_patientID(),标志);
}
public static final Parcelable.Creator=新建Parcelable.Creator(){
公共帐户持有人\u要从包裹中创建(包裹中){
将新账户持有人返回至(in);
}
公共帐户持有人\u到[]新数组(整数大小){
将新帐户持有人_返回到[大小];
}
};
@凌驾
公共int hashCode(){
最终整数素数=31;
int结果=1;
结果=素数*结果+A\u A\u账号;
返回结果;
}
@凌驾
公共布尔等于(对象obj){
if(this==obj)
返回true;
if(obj==null)
返回false;
如果(getClass()!=obj.getClass())
返回false;
账户持有人至其他=(账户持有人至)obj;
if(A_A_accountNumber!=其他.A_A_accountNumber)
返回false;
返回true;
}
}

提前谢谢你

谢谢你的评论, 幸运的是,我可以通过执行以下操作修复错误:

首先,正如您所说,我更改了主键的定义,如下所示:

private  int A_A_accountNumber;
public int save(AccountHolder_to acchold) {
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(DataBaseHelper.email, acchold.getA_email());
    values.put(DataBaseHelper.username, acchold.getA_username());
    values.put(DataBaseHelper.password, acchold.getA_password());
    values.put(DataBaseHelper.syncedURL, acchold.getA_syncedURL());
    values.put(DataBaseHelper.A_patientID, "");

    // Inserting Row
    long acc_Id = db.insert(dbHelper.accountHolder_Table, null, values);
    db.close(); // Closing database connection
    return (int) acc_Id;
}
这是一个整数,因为它是一个引用类型,所以导致了问题,我必须为此创建一个对象。但我只是把它改成“int”,它就成功了

其次,在我为CRUD操作创建的AccountHolderDAO中,我更改了插入操作,如下所示:

private  int A_A_accountNumber;
public int save(AccountHolder_to acchold) {
    SQLiteDatabase db = dbHelper.getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put(DataBaseHelper.email, acchold.getA_email());
    values.put(DataBaseHelper.username, acchold.getA_username());
    values.put(DataBaseHelper.password, acchold.getA_password());
    values.put(DataBaseHelper.syncedURL, acchold.getA_syncedURL());
    values.put(DataBaseHelper.A_patientID, "");

    // Inserting Row
    long acc_Id = db.insert(dbHelper.accountHolder_Table, null, values);
    db.close(); // Closing database connection
    return (int) acc_Id;
}

另一个错误是因为我试图发送一个值并调用主键的“get”方法,主键基本上是“AUTOINCREMENT”。实际上,我没有传递任何消息。

post AccountHolder\u to您获得了
NullPointerException
,这意味着您的对象在试图获得
getA\u A\u accountNumber
时处于空状态。请检查AccountHolder\u to中的第54行。java@Blackbelt我已发布。
A\u A\u accountNumber
为空。自动取消装箱正在使您的应用程序崩溃。