运行Android应用程序的SQLite错误

时间:2015-02-04 19:24:05

标签: android sqlite

我一直在android上开发一个简单的应用程序,你输入一系列数字并按下一个按钮,这个信息传递到另一个活动,应该存储在数据库中,当你提交的数字很好,但错误是使用sqlite中的函数,根据Logcat我的错误是语法,但我无法达到它,我是开发Android的新手

Logcat

     Build Date: 12/12/12 Wed
    Local Branch:
    Remote Branch: m/jb_rel_2.0.3
    Local Patches: NONE
    Reconstruct Branch: AU_LINUX_ANDROID_JB_REL_2.0.3_RB3.04.01.01.42.002 +  NOTHING
02-04 16:12:56.247  10395-10395/austranet.myapplication2 E/SQLiteLog﹕ (1) near "/": syntax error
02-04 16:12:56.247  10395-10395/austranet.myapplication2 W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x40f7c438)
02-04 16:12:56.267  10395-10395/austranet.myapplication2 E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to start activity ComponentInfo{austranet.myapplication2/austranet.myapplication2.registro}: android.database.sqlite.SQLiteException: near "/": syntax error (code 1): , while compiling: CREATE TABLE ingresos(_id INTEGER PRIMARY KEY AUTOINCREMENT,rut TEXT NOT NULL,fecha_registro DATETIME DEFAULT CURRENT_TIMESTAMP,ingreso/salida TEXT);

sqlite处理程序快照:

http://i.imgur.com/T0iwxHa.png

3 个答案:

答案 0 :(得分:2)

查看此字段:...,ingreso/salida TEXT);
这是无效的列定义

使用ingreso_salida

之类的内容

或使用(强烈气馁)方括号:
...,[ingreso/salida] TEXT);

答案 1 :(得分:1)

如果您想在列名中使用/,则必须将其括在括号中:

CREATE TABLE ingresos
  (_id              INTEGER PRIMARY KEY AUTOINCREMENT,
   rut              TEXT NOT NULL,
   fecha_registro   DATETIME DEFAULT CURRENT_TIMESTAMP,
   [ingreso/salida] TEXT); 

查看此Fiddle。查找文档here,第56页。注意,建议不要在标识符名称中使用任何类型的关键字。

答案 2 :(得分:1)

``当前的创建表查询有以下问题:

1。 ingreso/salida是无效的列名。在列名中使用有效字符,如ingreso_salida

2。列名称缺少列名称之间的空格。所以使用String.format创建有效的sqlite查询:

String tableQuery=String.format("CREATE TABLE %s (%s 
                                 INTEGER PRIMARY KEY AUTOINCREMENT,
                                 %s TEXT NOT NULL, 
                                 %s DATETIME DEFAULT CURRENT_TIMESTAMP,
                                 %s TEXT)",  
                                "ingresos", "_id",  
                                "rut", "fecha_registro","ingreso_salida"));