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 + "');");

mob1、mob2 の値が 10 未満の場合、データがデータベースに挿入されます。値が 9 を超える場合、numberformat 例外が発生します。

ここに私の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)
4

3 に答える 3

1

以下のように、この整数変数を long に変更する必要があります。

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);
于 2012-09-24T12:45:19.370 に答える
0

非常に単純です..実際には long の代わりに Double データ型を使用するだけです

于 2012-09-24T12:33:49.797 に答える
0

「s3 = Integer.parseInt(c.getString(c3));」という行で例外が発生しますか?

あなたはおそらくint範囲を超えています: -2,147,483,648 から 2,147,483,647. 電話番号の格納にlongを使用してみてください。

編集

次の行を置き換えます。

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

これで:

long s3Long = Integer.parseInt(c.getString(c3));
于 2012-09-24T12:34:07.367 に答える