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个值,则数据被插入到数据库中即可获得数字格式异常
这是我的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 :(得分: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);
答案 1 :(得分:0)
非常简单..实际上只使用Double数据类型而不是long
答案 2 :(得分: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));