Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行Android应用程序时发生SQLite错误_Android_Sqlite - Fatal编程技术网

运行Android应用程序时发生SQLite错误

运行Android应用程序时发生SQLite错误,android,sqlite,Android,Sqlite,我在android上开发了一个简单的应用程序,输入一系列数字并按下一个按钮,这些信息会传递到另一个活动,在那里应该存储在数据库中,当你提交数字时,很好,但错误是使用sqlite中的函数,根据Logcat,我的错误是语法,但我无法理解,我是为android开发的新手 航海日志 Build Date: 12/12/12 Wed Local Branch: Remote Branch: m/jb_rel_2.0.3 Local Patches: NONE Re

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

航海日志

     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处理程序快照:


检查此字段:
…,Ingreo/salida文本)
这是一个无效的列定义

使用类似于Ingreo_salida的代码

或者使用(强烈反对)方括号:

…[Ingreo/salida]文本)

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

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

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

`Current create table query存在以下问题:

1.
Ingreo/salida
是无效的列名。在列名中使用有效字符,如
Ingreo_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"));  

对于您的情况,您不需要数据库,您可以使用
Intent.putExtra
SharedReferences
从文档中实现您的目标
这不是标准的SQL。
双引号是括起标识符的标准方式。@njzk2:它在Android设备上与SQLite一起工作(请参见标记)。我知道这不是标准的SQL,甚至可能不好用。但这是可能的;)@特里尼蒙:在回答中,我们说的是不可能的。我们说,
/
不是列名的有效字符。它是有效的,但不建议使用。阅读文档(,第56页)。@Der Golem:列名、列定义和元符号之间存在差异。如果可以,请向我展示任何说明
ingreso/salida
是无效列名的Android SQLite文档。我肯定你不能。(见,)@Trinimon:是的,谢谢你提供的信息。让我知道为什么否决投票?因为“Ingreo/salida是无效的列名”。我想重点是,如果你想使用一些特殊的字符,比如
/
@Trinimon,你的意思是
ingreso/salida
是有效的名称吗?在表名和列名中允许读取
/
?是的,我刚刚用一个真正的设备(
adb shell…
)尝试了一下,效果非常好。如果你说列定义是错误的,我会同意的。但是列名是可以使用的,尽管它可能不是最好的选择。@Trinimon:伙计,在我们的回答中,我们说列名不能有任何特殊字符?我们是说Ingreo/salida不可能我希望你同意我们的观点。为了解决这个问题,您的建议是在
[]
中使用列名(这不是sqlite标准的命名保护),我们建议在列名词中使用有效的分隔符,如
\u
。那么问题在哪里??你为什么否决其他答案?好的。有这样一个“危险”的名字是不是很糟糕?不,请看我上面的评论——我也不会推荐它。但是,不能说它无效。
/
不是有效字符。事实上,您必须使用变通方法才能使用它(即
[]
)。我将此
[]
称为修复无效字符(可以是/、空格、连字符等)的一种变通方法。在SQLite中,使用
[]
是在标识符名称中使用保留关键字的一种已定义的方法-尽管不建议“作为一般经验法则,您应该尽量避免使用SQL语言中的任何关键字”,请参阅:@Trinimon,
Ingreo/salida
(不带括号)是无效名称。