对于字串编码问题,已经测试了很多种组合,基本可以排除。 出问题的代码如下:String strSQLText = String.format("SELECT ID FROM %s LIMIT 1", TableName); SqliteConnection.createStatement().executeQuery(strSQLText);当TableName为全英文时,查询正常; 当TableName包含中文符号时,查询就抛出java.lang.StringIndexOutOfBoundsException异常,且该异常无法被try捕获。 实在想不通是什么原因了......
给数据表名|表字段取名时,用中文还是用英文好,这个讨论可能就超出一定的范畴了,呵呵。我纠结的只是: ----------------------------------------------------------------- String strSQLText = String.format("SELECT ID FROM %s LIMIT 1", TableName); SqliteConnection.createStatement().executeQuery(strSQLText);当TableName为全英文时,查询正常; 当TableName包含中文符号时,查询就抛出java.lang.StringIndexOutOfBoundsException异常,且该异常无法被try捕获。 -----------------------------------------------------------------希望有遇过类似问题的同行能指点一二,不胜感谢。
这样写,试试看 String strSQLText = String.format("SELECT ID FROM '%s' LIMIT 1", TableName); 或者这样 String strSQLText = String.format("SELECT ID FROM 、\"%s\" LIMIT 1", TableName);
请问楼主是怎么解决的 我也遇到一样的问题 在安卓中读取数据库,由于数据库原先是access的数据库,经过一个工具转成sqlite数据库,数据库中有部分表的名称和列的名称是中文的,在读取的时候访问不到。 前段时间曾经出现这样的问题,数据库的表名及列名是英文的,但表中存储的内容是中文的,一开始用cur.getString()方法读出来的是乱码,后来我用string = new String(cur.getBlob(Column),"GB18030")的方法解决了,成功读出中文。但是这次不一样了,表名和列名都是中文的,数据库查询语句中必须用 cur = mSQLiteDatabase.rawQuery("SELECT * FROM 表名 where BDNM = ? ", new String[]{BDNM})的方法,请问楼主如何解决数据库中表名及列名是中文的问题?
java.lang.StringIndexOutOfBoundsException
严重怀疑:异常并没发生在SQLite的C++运行代码里,而发生在rawQuery方法里。
我用的是模拟器2.2/2.3,真机P1000,都存在这个问题。
出问题的代码如下:String strSQLText = String.format("SELECT ID FROM %s LIMIT 1", TableName);
SqliteConnection.createStatement().executeQuery(strSQLText);当TableName为全英文时,查询正常;
当TableName包含中文符号时,查询就抛出java.lang.StringIndexOutOfBoundsException异常,且该异常无法被try捕获。
实在想不通是什么原因了......
-----------------------------------------------------------------
String strSQLText = String.format("SELECT ID FROM %s LIMIT 1", TableName);
SqliteConnection.createStatement().executeQuery(strSQLText);当TableName为全英文时,查询正常;
当TableName包含中文符号时,查询就抛出java.lang.StringIndexOutOfBoundsException异常,且该异常无法被try捕获。
-----------------------------------------------------------------希望有遇过类似问题的同行能指点一二,不胜感谢。
String strSQLText = String.format("SELECT ID FROM '%s' LIMIT 1", TableName);
或者这样
String strSQLText = String.format("SELECT ID FROM 、\"%s\" LIMIT 1", TableName);
前段时间曾经出现这样的问题,数据库的表名及列名是英文的,但表中存储的内容是中文的,一开始用cur.getString()方法读出来的是乱码,后来我用string = new String(cur.getBlob(Column),"GB18030")的方法解决了,成功读出中文。但是这次不一样了,表名和列名都是中文的,数据库查询语句中必须用
cur = mSQLiteDatabase.rawQuery("SELECT * FROM 表名 where BDNM = ? ", new String[]{BDNM})的方法,请问楼主如何解决数据库中表名及列名是中文的问题?