我想把下载下来的网页的html放入数据库,可是使用insert语句时,由于html中包含许多单双引号和转义符,总是会失败,不知道处理这个问题,有没有好办法啊

解决方案 »

  1.   

    用dataadapter直接DataTable或Dataset保存。
      

  2.   

    a=html内容
    a.Replace("\"","\\\"");
      

  3.   

    先把字符串做处理,replace("\","\\\") replace("'","''")
      

  4.   

    可以说详细点吗?我这个是用WebResponse下载网页的HTML,下来后保存成了string
    能否给个代码演示下
      

  5.   

    replace方法替换后的仍然有问题,而且将来还要把存入数据库的HTML代码取出来,如果替换掉,将来取回来的时候再替换也麻烦
      

  6.   


    我试了,调用存储过程照样存不进去,会出现异常,{"Incorrect string value: '\\xC2\\xB7<a h...' for column 'html' at row 1"}我的存储过程
     CREATE PROCEDURE insertpc(in htmlstr LongText,in dates date,in urlstr Text)
                begin
                INSERT INTO pachong(html,faburiqi,url)  VALUES(htmlstr,dates,urlstr);
                endc#调用:
            public void CCHinsert(string html, string date, string url)
            {            MySqlConnection mysqlcon;
                MySqlDataAdapter mysqldata = new MySqlDataAdapter();
                DataSet dataset = new DataSet();
                mysqlcon = new MySqlConnection(ContString);
                mysqlcon.Open();
                mysqldata.SelectCommand = new MySqlCommand();
                mysqldata.SelectCommand.Connection = mysqlcon;
                mysqldata.SelectCommand.CommandText = "insertpc";//存储过程的名字
                mysqldata.SelectCommand.CommandType = CommandType.StoredProcedure;//设置类型为存储过程
                //设置参数,添加到数据库
                MySqlParameter html_parameter = new MySqlParameter("?htmlstr", MySqlDbType.LongText);
                html_parameter.Value = html;
                mysqldata.SelectCommand.Parameters.Add(html_parameter);            MySqlParameter date_parameter = new MySqlParameter("?dates", MySqlDbType.Date);
                date_parameter.Value = date;
                mysqldata.SelectCommand.Parameters.Add(date_parameter);            MySqlParameter password_parameter = new MySqlParameter("?urlstr", MySqlDbType.Text);
                url_parameter.Value = url;
                mysqldata.SelectCommand.Parameters.Add(url_parameter);            mysqldata.SelectCommand.ExecuteNonQuery();
            }
      

  7.   

    1、替换字符串  读取出来再替换  就多加几行代码
    2、存储过程
    确定你存储过程没问题
    要不建议你把string转换成二进制存储吧 varbinary
      

  8.   

    是不是因为你的string超长了,mysql没用过,oracle中好象varchar最长是8000
      

  9.   


    mysql里面的varchar限定最长21845,一般网页的HTML绝对超过了
    我用varchar时候会提示插入的列太长,所以没办法了只好用longtext,但是用这个就会出现异常,{"Incorrect string value: '\\xC2\\xB7<a h...' for column 'html' at row 1"}
      

  10.   

    替换的话,我替换了单引号和/照样出现异常,{"Incorrect string value: '\\xC2\\xB7<a h...' for column 'html' at row 1"}
      

  11.   

    我也遇到这样的问题,请教一下你是怎么解决的,我数据库的编号是utf8_general_ci的