Android-SQLite无法读取第0行第1列错误

Android-SQLite无法读取第0行第1列错误,android,sqlite,Android,Sqlite,我有一个应用程序,它填充11个数据库表,然后获取数据并将其显示在LogCat中。在我将主键更改为Autoincrement之前,我的应用程序一直工作。所有桌子的变化都很好,但有一张桌子给了我一个问题 这是我的DBAdapter,也是生成用户数据库的部分(给我带来问题的部分): 当然,在下面几行中,在我的DBAdapter的onCreate方法中,我有: database.execSQL(DATABASE_CREATE_AUTHORIZED_PERSONNEL_TABLE); 我

我有一个应用程序,它填充11个数据库表,然后获取数据并将其显示在LogCat中。在我将主键更改为Autoincrement之前,我的应用程序一直工作。所有桌子的变化都很好,但有一张桌子给了我一个问题

这是我的DBAdapter,也是生成用户数据库的部分(给我带来问题的部分):

当然,在下面几行中,在我的DBAdapter的
onCreate
方法中,我有:

        database.execSQL(DATABASE_CREATE_AUTHORIZED_PERSONNEL_TABLE);
我还有一个userClass,如下所示:

public class UserClass {

private String _id;
private String username;
private String password;
private String l_name;
private String m_name;
private String f_name;
private String office;
private String Cellphone_Number;
private String Landline;
private String Address;
private String Email;


//constructor - empty
public UserClass(){

}

//constructor
public UserClass(String userName, String passWord, String LastName, String MiddleName, String FirstName, 
                    String Office, String cpNumber, String landLine, String Address, String Email){
    this.username = userName;
    this.password = passWord;
    this.l_name = LastName;
    this.m_name = MiddleName;
    this.f_name = FirstName;
    this.office = Office;
    this.Cellphone_Number = cpNumber;
    this.Landline = landLine;
    this.Address = Address;
    this.Email = Email;

}
我有我的二传手和接球手在那些建设者之后

我还有一个UserDBAdapter类,负责数据库查询和数据获取,它是我的数据访问对象。这是
addUser(UserClass用户)
方法:

//add one user
public long addUser(UserClass user){

    ContentValues values = new ContentValues();

    values.put(USERNAME, user.getUsername());
    values.put(PASSWORD, user.getPassword());
    values.put(L_NAME, user.getL_name());
    values.put(M_NAME, user.getM_name());
    values.put(F_NAME, user.getF_name());
    values.put(OFFICE, user.getOffice());
    values.put(CELLPHONENUMBER, user.getCellphone_Number());
    values.put(LANDLINE, user.getLandline());
    values.put(ADDRESS, user.getAddress());
    values.put(EMAIL, user.getEmail());

    return this.mDB.insert(TABLE_USER, null, values);
}
这是获取所有用户及其详细信息的方法: //获取所有用户 公共列表getAllUsers(){ List contactList=new ArrayList(); //选择所有查询 String selectQuery=“SELECT*FROM”+表格\用户

    Cursor cursor = mDB.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            UserClass user = new UserClass();

            user.set_id(cursor.getString(cursor.getColumnIndex(USER_ID) ) );
            user.setUsername(cursor.getString(cursor.getColumnIndex(USERNAME) ) );
            user.setPassword(cursor.getString(cursor.getColumnIndex(PASSWORD) ) );
            user.setL_name(cursor.getString(cursor.getColumnIndex(L_NAME) ) );
            user.setM_name(cursor.getString(cursor.getColumnIndex(M_NAME) ) );
            user.setF_name(cursor.getString(cursor.getColumnIndex(F_NAME) ) );
            user.setOffice(cursor.getString(cursor.getColumnIndex(OFFICE) ) );
            user.setCellphone_Number(cursor.getString(cursor.getColumnIndex(CELLPHONENUMBER) ) );
            user.setLandline(cursor.getString(cursor.getColumnIndex(LANDLINE) ) );
            user.setAddress(cursor.getString(cursor.getColumnIndex(ADDRESS) ) );
            user.setEmail(cursor.getString(cursor.getColumnIndex(EMAIL) ) );


            // Adding contact to list
            contactList.add(user);
        } while (cursor.moveToNext());
    }

    // return contact list
    return contactList;
}
在我的活动中,我将填充数据库并获取数据:

public void initializeUserDB(){
    Log.d("Users", "Inserting . . .");

    userDB.open();
    userDB.addUser(new UserClass("user1", "1234", "Doe", "Smith", "John", "Makati", 
                                    "09123456789", "1234567", "Lorem Ipsum Dolor", "LoremIpsum@Dolor.com"));
    userDB.addUser(new UserClass("user2", "1234", "Smith", "Doe", "John", "Makati", 
                                    "cpNumber", "Landline", "address", "electronic Mail Address"));


    //Check if they were inputted properly
    Log.d("Reading: ", "Reading all users . . ."); 
    List<UserClass> users = userDB.getAllUsers();       

    for (UserClass user : users) {
        String log = "Id: " + user.get_id() + "\n" +
                        "Username: " + user.getUsername() + "\n" +
                        "Password: " + user.getPassword() + "\n" +
                        "Last Name: " + user.getL_name() + "\n" +
                        "Middle Name: " + user.getM_name() + "\n" +
                        "First Name: " + user.getF_name() + "\n" +
                        "Office: " + user.getOffice() + "\n" +
                        "Cellphone Number: " + user.getCellphone_Number() + "\n" +
                        "Landline: " + user.getLandline() + "\n" +
                        "Address: " + user.getAddress() +"\n" +
                        "Email: " + user.getEmail();
            // Writing Contacts to log
        Log.d("Details: ", log);
    }
    userDB.close();
}
public void initializeUserDB(){
Log.d(“用户”,“插入…”);
userDB.open();
addUser(新的用户类(“user1”、“1234”、“Doe”、“Smith”、“John”、“Makati”),
“09123456789”、“1234567”、“Lorem Ipsum Dolor”LoremIpsum@Dolor.com"));
userDB.addUser(新的UserClass(“user2”、“1234”、“Smith”、“Doe”、“John”、“Makati”),
“电话号码”、“固定电话”、“地址”、“电子邮件地址”);
//检查它们是否正确输入
Log.d(“读取:”,“读取所有用户…”);
List users=userDB.getAllUsers();
for(用户类用户:用户){
String log=“Id:”+user.get\u Id()+“\n”+
用户名:“+user.getUsername()+”\n+
密码:“+user.getPassword()+”\n+
姓氏:“+user.getL\u Name()+”\n+
中间名:“+user.getM_Name()+”\n+
名:“+user.getF_Name()+”\n”+
Office:“+user.getOffice()+”\n”+
手机号码:“+user.getmobile\u Number()+”\n+
固定电话:“+user.getLandline()+”\n”+
地址:“+user.getAddress()+”\n+
“电子邮件:”+user.getEmail();
//将联系人写入日志
Log.d(“详细信息:”,Log);
}
userDB.close();
}
数据被正确插入,但是,在获取数据时,LogCat告诉我在我的userDBAdapter类中的
user.setEmail(cursor.getString(cursor.getColumnIndex(EMAIL));
行有问题

我想我能够正确初始化我的电子邮件列,否则我的数据插入顺序会出错。如果我注释掉那一行,活动中的
user.getEmail();
方法将给我null


我对这个问题感到困惑,我正确地初始化了表并正确地插入了值,我不明白为什么我不能正确地获取值。

我又犯了一个简单的错误,对不起

在我的userDBAdapter类中,行
公共静态最终字符串EMAIL=“EMAIL”
应该是:
公共静态最终字符串EMAIL=“EMAIL”

public void initializeUserDB(){
    Log.d("Users", "Inserting . . .");

    userDB.open();
    userDB.addUser(new UserClass("user1", "1234", "Doe", "Smith", "John", "Makati", 
                                    "09123456789", "1234567", "Lorem Ipsum Dolor", "LoremIpsum@Dolor.com"));
    userDB.addUser(new UserClass("user2", "1234", "Smith", "Doe", "John", "Makati", 
                                    "cpNumber", "Landline", "address", "electronic Mail Address"));


    //Check if they were inputted properly
    Log.d("Reading: ", "Reading all users . . ."); 
    List<UserClass> users = userDB.getAllUsers();       

    for (UserClass user : users) {
        String log = "Id: " + user.get_id() + "\n" +
                        "Username: " + user.getUsername() + "\n" +
                        "Password: " + user.getPassword() + "\n" +
                        "Last Name: " + user.getL_name() + "\n" +
                        "Middle Name: " + user.getM_name() + "\n" +
                        "First Name: " + user.getF_name() + "\n" +
                        "Office: " + user.getOffice() + "\n" +
                        "Cellphone Number: " + user.getCellphone_Number() + "\n" +
                        "Landline: " + user.getLandline() + "\n" +
                        "Address: " + user.getAddress() +"\n" +
                        "Email: " + user.getEmail();
            // Writing Contacts to log
        Log.d("Details: ", log);
    }
    userDB.close();
}