【问题标题】:Android - How to insert HTML string into SQLiteAndroid - 如何将 HTML 字符串插入 SQLite
【发布时间】:2016-12-27 02:37:20
【问题描述】:

在databaseHandler.java中:

public void Exec(String strSQL) {
        OpenDB();
        db.execSQL(strSQL);
        CloseDB();
    }

插入方法:

 public void InsertData (int Id, String name, String content){
        int nr= db.CountRecord("select * from tbPosts where PostID="+Id+"");
        if(nr==0){
            db.Exec("insert into tbPosts values('"+Id+"','"+name+"','"+content+"')");
        }
    }

“内容”值包括 HTML 字符串。运行应用程序时,Android Studio 显示:语法错误..

【问题讨论】:

  • 您能否详细说明您收到的错误消息以及您收到错误的确切行。
  • “内容”字段包含特殊字符:'

标签: android html sqlite insert


【解决方案1】:

您可以使用 ContentValues 插入数据,这样您就不必以 html 格式转义字符,例如“”或 ''。

public void InsertData (int Id, String name, String content){
    int nr= db.CountRecord("select * from tbPosts where PostID="+Id+"");
    if(nr==0){
       ContentValues cv = new ContentValues();
       cv.put("id",id);
       cv.put("name",name);
       cv.put("content",content);
       db.insert("tbPosts",null,cv);
    }
}

在您的数据库助手类中:

public void insert(String tableName, String additional, ContentValues values) {
   db.insert(tableName,null,values);
}

【讨论】:

  • 感谢您的评论!但是,有错误“无法解析方法插入”
  • 你的数据库类是什么?
  • no..它的助手类..只需创建附加方法来插入
  • 可以分享一下方法吗!
【解决方案2】:

据我了解,Id 是整数,因此在 db.Exec 命令中不应使用“+id+”包装,而应仅使用“+id+”包装。如果它不能解决您的问题,请提供完整的错误日志

【讨论】:

  • Cái này lỗi ở cái content của em nó nó chứa dấu ' anh ạ!
【解决方案3】:

Content 字符串包含不允许的特殊字符。引用 java 文档:

在任何不表示转义结构的字母字符之前使用反斜杠是错误的;这些是为将来对正则表达式语言的扩展而保留的。可以在非字母字符之前使用反斜杠,无论该字符是否是未转义结构的一部分。

无论如何,存储和查询 HTML 并不是一个好主意,你的用例是什么。我相信会有更好的方法来实现它。

【讨论】:

  • 我的应用是医疗保健!我的应用程序从 My Webservice 获取数据。 TbPosts(ID、名称、内容、..)内容字段(Tinymce 输入)包括 HTML 字符串以显示粗体、换行、图像、对齐、..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-11
  • 2019-01-20
  • 1970-01-01
  • 2022-01-02
  • 2021-05-19
相关资源
最近更新 更多