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 异常

这是我的日志猫

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

非常简单..实际上只需使用 Double 数据类型而不是 long

于 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 回答