《sqlite:未实现驱动和乱码问题解决》要点:
本文介绍了sqlite:未实现驱动和乱码问题解决,希望对您有用。如果有疑问,可以联系我们。
1、sqlite默认使用UTF-8编码,从数据库(UTF-8)查出来的时候遍历ResultSet时候一定使用:rs.getBytes(columnname),不能使用re.getString(XXX)
public static String resultSetToJson(ResultSet rs) throws sqlException,JsONException,UnsupportedEnCodingException {
// Json数组
JsONArray array = new JsONArray();
// 获取列数
ResultSetMetaData MetaData = rs.getMetaData();
int columnCount = MetaData.getColumnCount();
// 遍历ResultSet中的每条数据
while (rs.next()) {
JsONObject JsonObj = new JsONObject();
// 遍历每一列
for (int i = 1; i <= columnCount; i++) {
String value = null;
String columnname = MetaData.getColumnLabel(i);//列名称
if (rs.getString(columnname) != null&&!rs.getString(columnname).equals("")) {
value = new String(rs.getBytes(columnname));//列的值,有数据则转码
} else {
value = "";//列的值,为空,直接取出去 } JsonObj.put(columnname,value);}
array.add(JsonObj); } return array.toString();}
2、sqlite报错 not implemented by sqlite JDBC driver,参照下面代码解决
/**执行插入和更改 *** 作,无返回ResultSetpublic static voID updateUser() throws Exception {
String rs = sqliteDB.GetHtttplink("http://127.0.0.1:18181/db/upuser");
JsONArray array = JsONArray.parseArray(rs);
for (int i = 0; i < array.size(); i++) {
JsONObject obj = array.getJsONObject(i);
int ID = Integer.parseInt(obj.getString("ID"));
String sql = "insert into user values(?,?,?)";
Connection con = sqliteDB.getCon();
PreparedStatement pst = con.prepareStatement(sql);
pst.setInt(1,ID);
pst.addBatch();//注意此种形式可以解决报错
pst.executeBatch(); }}注意此种形式可以解决报错
/**执行查询 *** 作
public static voID selectUser() throws sqlException {Connection connection = sqliteDB.getCon();
PreparedStatement pst = connection.prepareStatement("select comment from user;");
ResultSet resultSet = pst.executequery();//后面这个不能带sql
while (resultSet.next()) {
String s = resultSet.getString("comment");
}}
欢迎参与《sqlite:未实现驱动和乱码问题解决》讨论,分享您的想法,内存溢出PHP学院为您提供专业教程。
总结以上是内存溢出为你收集整理的Sqlite:未实现驱动和乱码问题解决全部内容,希望文章能够帮你解决Sqlite:未实现驱动和乱码问题解决所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)