Java parseInt时发生SQLite错误
我正在尝试使用SQLite。因为这是我第一次尝试实现SQLite,所以我遵循 但我犯了这样的错误Java parseInt时发生SQLite错误,java,android,sqlite,Java,Android,Sqlite,我正在尝试使用SQLite。因为这是我第一次尝试实现SQLite,所以我遵循 但我犯了这样的错误 08-21 20:47:44.129: E/AndroidRuntime(1710): FATAL EXCEPTION: main 08-21 20:47:44.129: E/AndroidRuntime(1710): Process: com.indomultimedia.hellobali, PID: 1710 08-21 20:47:44.129: E/AndroidRuntime(1710)
08-21 20:47:44.129: E/AndroidRuntime(1710): FATAL EXCEPTION: main
08-21 20:47:44.129: E/AndroidRuntime(1710): Process: com.indomultimedia.hellobali, PID: 1710
08-21 20:47:44.129: E/AndroidRuntime(1710): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.indomultimedia.hellobali/com.indomultimedia.hellobali.MainHelloballi}: java.lang.NumberFormatException: Invalid int: "null"
08-21 20:47:44.129: E/AndroidRuntime(1710): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292)
08-21 20:47:44.129: E/AndroidRuntime(1710): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2350)
08-21 20:47:44.129: E/AndroidRuntime(1710): at android.app.ActivityThread.access$800(ActivityThread.java:163)
08-21 20:47:44.129: E/AndroidRuntime(1710): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1257)
08-21 20:47:44.129: E/AndroidRuntime(1710): at android.os.Handler.dispatchMessage(Handler.java:102)
08-21 20:47:44.129: E/AndroidRuntime(1710): at android.os.Looper.loop(Looper.java:157)
08-21 20:47:44.129: E/AndroidRuntime(1710): at android.app.ActivityThread.main(ActivityThread.java:5335)
08-21 20:47:44.129: E/AndroidRuntime(1710): at java.lang.reflect.Method.invokeNative(Native Method)
08-21 20:47:44.129: E/AndroidRuntime(1710): at java.lang.reflect.Method.invoke(Method.java:515)
08-21 20:47:44.129: E/AndroidRuntime(1710): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
08-21 20:47:44.129: E/AndroidRuntime(1710): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
08-21 20:47:44.129: E/AndroidRuntime(1710): at dalvik.system.NativeStart.main(Native Method)
08-21 20:47:44.129: E/AndroidRuntime(1710): Caused by: java.lang.NumberFormatException: Invalid int: "null"
08-21 20:47:44.129: E/AndroidRuntime(1710): at java.lang.Integer.invalidInt(Integer.java:137)
08-21 20:47:44.129: E/AndroidRuntime(1710): at java.lang.Integer.parseInt(Integer.java:354)
08-21 20:47:44.129: E/AndroidRuntime(1710): at java.lang.Integer.parseInt(Integer.java:331)
08-21 20:47:44.129: E/AndroidRuntime(1710): at com.indomultimedia.hellobali.DatabaseHandler.getAllContacts(DatabaseHandler.java:98)
08-21 20:47:44.129: E/AndroidRuntime(1710): at com.indomultimedia.hellobali.MainHelloballi.onCreate(MainHelloballi.java:177)
08-21 20:47:44.129: E/AndroidRuntime(1710): at android.app.Activity.performCreate(Activity.java:5389)
08-21 20:47:44.129: E/AndroidRuntime(1710): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
08-21 20:47:44.129: E/AndroidRuntime(1710): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2256)
08-21 20:47:44.129: E/AndroidRuntime(1710): ... 11 more
这是我代码中的错误行
MainHellobali.java
// Reading all contacts
Log.d("Reading: ", "Reading all contacts..");
List<AllItem> allItem = db.getAllContacts(); //Error in this line
for (AllItem cn : allItem) {
String log = "Id: "+cn.getTableID()+" ,Name: " + cn.getCategory_name() + " ,Phone: " + cn.getItem_name();
// Writing Contacts to log
Log.d("Name: ", log);
}
// Getting All Contacts
public List<AllItem> getAllContacts() {
List<AllItem> contactList = new ArrayList<AllItem>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_ALLITEM;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
AllItem allitem = new AllItem();
allitem.setTableID(Integer.parseInt(cursor.getString(0))); // error in this line
allitem.setCategory_name(cursor.getString(1));
allitem.setItem_Name(cursor.getString(2));
// Adding contact to list
contactList.add(allitem);
} while (cursor.moveToNext());
}
// return contact list
return contactList;
}
//读取所有联系人
日志d(“读取:”,“读取所有联系人…”);
List allItem=db.getAllContacts()//这行有错误
对于(AllItem cn:AllItem){
String log=“Id:”+cn.getTableID()+”,Name:“+cn.getCategory_Name()+”,Phone:“+cn.getItem_Name()”;
//将联系人写入日志
Log.d(“名称:”,Log);
}
DatabaseHandler.java
// Reading all contacts
Log.d("Reading: ", "Reading all contacts..");
List<AllItem> allItem = db.getAllContacts(); //Error in this line
for (AllItem cn : allItem) {
String log = "Id: "+cn.getTableID()+" ,Name: " + cn.getCategory_name() + " ,Phone: " + cn.getItem_name();
// Writing Contacts to log
Log.d("Name: ", log);
}
// Getting All Contacts
public List<AllItem> getAllContacts() {
List<AllItem> contactList = new ArrayList<AllItem>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_ALLITEM;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
AllItem allitem = new AllItem();
allitem.setTableID(Integer.parseInt(cursor.getString(0))); // error in this line
allitem.setCategory_name(cursor.getString(1));
allitem.setItem_Name(cursor.getString(2));
// Adding contact to list
contactList.add(allitem);
} while (cursor.moveToNext());
}
// return contact list
return contactList;
}
//获取所有联系人
公共列表getAllContacts(){
List contactList=new ArrayList();
//选择所有查询
String selectQuery=“SELECT*FROM”+表格项目;
SQLiteDatabase db=this.getWritableDatabase();
Cursor Cursor=db.rawQuery(selectQuery,null);
//循环遍历所有行并添加到列表
if(cursor.moveToFirst()){
做{
AllItem AllItem=新AllItem();
allitem.setTableID(Integer.parseInt(cursor.getString(0));//此行出错
allitem.setCategory_名称(cursor.getString(1));
allitem.setItem_名称(cursor.getString(2));
//将联系人添加到列表中
联系人列表。添加(allitem);
}while(cursor.moveToNext());
}
//返回联系人列表
返回联系人列表;
}
我不知道为什么会出现错误。我试着尽可能地遵循教程。
任何人都可以帮助修复此错误?Integer.parseInt(cursor.getString(0))这是触发此错误的行
cursor.getString(0)
返回null
。总的来说,我建议您将这一行替换为以下内容:cursor.getInt(0)
。但是,如果列为null,我想这仍然会抛出。Integer.parseInt(cursor.getString(0))这是触发错误的行
cursor.getString(0)
返回null
。总的来说,我建议您将这一行替换为以下内容:cursor.getInt(0)
。但是,如果列为null,我想这仍然会抛出。Integer.parseInt(cursor.getString(0))这是触发错误的行
cursor.getString(0)
返回null
。总的来说,我建议您将这一行替换为以下内容:cursor.getInt(0)
。但是,如果列为null,我想这仍然会抛出。Integer.parseInt(cursor.getString(0))这是触发错误的行
cursor.getString(0)
返回null
。总的来说,我建议您将这一行替换为以下内容:cursor.getInt(0)
。但是,如果列为null,我想这仍然会抛出。错误消息说明了一切。您正试图将“null”数据库字段解析为int
。p、 您应该调用cursor.getInt(0)
,而不是Integer.parseInt(cursor.getString(0))
。在所有数据库中,如果数据类型为Integer
,则必须是正数和负数,以及零。感谢您的评论:数据错误消息说明了一切。您正试图将“null”数据库字段解析为int
。p、 您应该调用cursor.getInt(0)
,而不是Integer.parseInt(cursor.getString(0))
。在所有数据库中,如果数据类型为Integer
,则必须是正数和负数,以及零。感谢您的评论:数据错误消息说明了一切。您正试图将“null”数据库字段解析为int
。p、 您应该调用cursor.getInt(0)
,而不是Integer.parseInt(cursor.getString(0))
。在所有数据库中,如果数据类型为Integer
,则必须是正数和负数,以及零。感谢您的评论:数据错误消息说明了一切。您正试图将“null”数据库字段解析为int
。p、 您应该调用cursor.getInt(0)
,而不是Integer.parseInt(cursor.getString(0))
。在所有数据库中,如果数据类型为Integer
,则必须是填充正数和负数以及零。感谢您的评论:DThanks。我会尽快接受你的答复。谢谢。我会尽快接受你的答复。谢谢。我会尽快接受你的答复。谢谢。我会尽快接受你的答复。