2012-09-24 15 views
0
n1 = (EditText) findViewById(R.id.num1); 
    int no1 = Integer.parseInt(n1.getText().toString()); 
    n2 = (EditText) findViewById(R.id.num2); 
    int no2 = Integer.parseInt(n2.getText().toString()); 
    message = (EditText) findViewById(R.id.message); 
    String msg = message.getText().toString(); 
    settings.execSQL("CREATE TABLE IF NOT EXISTS settingtb(mob1 LONG,mob2 LONG,time VARCHAR,message VARCHAR(1000));"); 
    settings.execSQL("INSERT INTO settingtb VALUES('" + no1 + "','" + no2 
      + "'," + time + ",'" + msg + "');"); 

數據如果超過9個值即時得到的NumberFormat例外插入和檢索的手機號碼到數據庫中的Android

這裏被插入到數據庫中,如果mob1,MOB2值小於10倍的值是我logcat的

09-24 18:16:23.594: E/AndroidRuntime(1656): FATAL EXCEPTION: main 
09-24 18:16:23.594: E/AndroidRuntime(1656): java.lang.NumberFormatException: Invalid int: "7842334531" 
09-24 18:16:23.594: E/AndroidRuntime(1656):  at java.lang.Integer.invalidInt(Integer.java:138) 
09-24 18:16:23.594: E/AndroidRuntime(1656):  at java.lang.Integer.parse(Integer.java:378) 
09-24 18:16:23.594: E/AndroidRuntime(1656):  at java.lang.Integer.parseInt(Integer.java:366) 
09-24 18:16:23.594: E/AndroidRuntime(1656):  at java.lang.Integer.parseInt(Integer.java:332) 
09-24 18:16:23.594: E/AndroidRuntime(1656):  at com.example.esha.settings.calltable(settings.java:87) 
09-24 18:16:23.594: E/AndroidRuntime(1656):  at com.example.esha.settings$1.onClick(settings.java:76) 
09-24 18:16:23.594: E/AndroidRuntime(1656):  at android.view.View.performClick(View.java:4084) 
09-24 18:16:23.594: E/AndroidRuntime(1656):  at android.view.View$PerformClick.run(View.java:16966) 
09-24 18:16:23.594: E/AndroidRuntime(1656):  at android.os.Handler.handleCallback(Handler.java:615) 
09-24 18:16:23.594: E/AndroidRuntime(1656):  at android.os.Handler.dispatchMessage(Handler.java:92) 
09-24 18:16:23.594: E/AndroidRuntime(1656):  at android.os.Looper.loop(Looper.java:137) 
09-24 18:16:23.594: E/AndroidRuntime(1656):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
09-24 18:16:23.594: E/AndroidRuntime(1656):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-24 18:16:23.594: E/AndroidRuntime(1656):  at java.lang.reflect.Method.invoke(Method.java:511) 
09-24 18:16:23.594: E/AndroidRuntime(1656):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
09-24 18:16:23.594: E/AndroidRuntime(1656):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
09-24 18:16:23.594: E/AndroidRuntime(1656):  at dalvik.system.NativeStart.main(Native Method) 
+0

現在您希望用戶必須輸入10個號碼才能使用手機?正確? –

+0

是的,我想把它插入數據庫,並檢索也plz看到我的logcat –

+0

通過把try/catch並向用戶顯示toast消息「無效移動號碼」這樣捕捉異常。 –

回答

1

您需要將這個整型變量變成如下長,

long no2 = Long.parseLong(n2.getText().toString().trim()); 

要插入在錯誤的方式值,你將在mob1 & MOB2領域的字符串值,在將其轉爲數字如下,

settings.execSQL("INSERT INTO settingtb VALUES(" + no1 + "," + no2 
      + "," + time + ",'" + msg + "');"); 

你並不需要添加'當你插入數值。

另外當你正在提取的值,你做錯了,你正在訪問的一切整數變量?請按照以下方式更改:

c.moveToFirst(); 
    if(c!=null) 
    { 
     do{ 
     long c1 = c.getColumnIndex("mob1"); 
     long c2 = c.getColumnIndex("mob2"); 
     String c3 = c.getColumnIndex("time"); 
     String c4 = c.getColumnIndex("message"); 

     s1 = c.getString(c1); 
     s2 = c.getString(c2); 
     s3 = c.getString(c3); 
     s4 = c.getString(c4); 
+0

我也試過了,但我收到了強制關閉PLZ看到我的logcat –

+0

@ChaitanyaSai,請參閱更新 – Lucifer

+0

檢索問題沒有問題是插入10位數的手機號碼數據庫 –

0

非常simple..actaully只使用雙數據類型,而不是長期

+0

我試過了,但它並不是我的問題的實際解決方案 –

0

你的異常是否發生在這一行: 「S3 =的Integer.parseInt(c.getString(C3));」?

您可能超過了int範圍:-2,147,483,648至2,147,483,647。嘗試使用來存儲電話號碼。

編輯

替換此行:

s3 = Integer.parseInt(c.getString(c3)); 

有了這一個:

long s3Long = Integer.parseInt(c.getString(c3)); 
+1

我只使用了LONG來插入 –

+0

您的異常發生在哪裏?堆棧跟蹤沒有多大幫助,因爲我們看不到線路的編號。請看我編輯的答案。 – Buffalo

+0

我在插入語句時遇到問題 –

相關問題