c#将网页的HTML代码存储到mysql中有没好办法处理啊 我想把下载下来的网页的html放入数据库,可是使用insert语句时,由于html中包含许多单双引号和转义符,总是会失败,不知道处理这个问题,有没有好办法啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用dataadapter直接DataTable或Dataset保存。 a=html内容a.Replace("\"","\\\""); 先把字符串做处理,replace("\","\\\") replace("'","''") 可以说详细点吗?我这个是用WebResponse下载网页的HTML,下来后保存成了string能否给个代码演示下 replace方法替换后的仍然有问题,而且将来还要把存入数据库的HTML代码取出来,如果替换掉,将来取回来的时候再替换也麻烦 我试了,调用存储过程照样存不进去,会出现异常,{"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(); } 1、替换字符串 读取出来再替换 就多加几行代码2、存储过程确定你存储过程没问题要不建议你把string转换成二进制存储吧 varbinary 是不是因为你的string超长了,mysql没用过,oracle中好象varchar最长是8000 mysql里面的varchar限定最长21845,一般网页的HTML绝对超过了我用varchar时候会提示插入的列太长,所以没办法了只好用longtext,但是用这个就会出现异常,{"Incorrect string value: '\\xC2\\xB7<a h...' for column 'html' at row 1"} 替换的话,我替换了单引号和/照样出现异常,{"Incorrect string value: '\\xC2\\xB7<a h...' for column 'html' at row 1"} 我也遇到这样的问题,请教一下你是怎么解决的,我数据库的编号是utf8_general_ci的 關於C# 指標的問題 关于HOOK键盘 对一个TREEVIEW设置了IMAGELIST,接下来有个问题。 CrystalReport1”(是否缺少 using 指令或程序集引用?)在线等急!!谢谢[问题点数:20分] 新手求教 操作数据库问题 关于连接Oracle的奇怪问题 TcpClient发送数据如何指定发送的端口 一个初级问题:关于如何引用全局程序集缓存内的程序集 wpf datagrid 获取已加载所有数据的方法 高分向各位大虾求教! 如何将datagridview的某列移到最后一列显示 【高分】 webbrowser多线程请教~分不够可以再给~~
a.Replace("\"","\\\"");
能否给个代码演示下
我试了,调用存储过程照样存不进去,会出现异常,{"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();
}
2、存储过程
确定你存储过程没问题
要不建议你把string转换成二进制存储吧 varbinary
mysql里面的varchar限定最长21845,一般网页的HTML绝对超过了
我用varchar时候会提示插入的列太长,所以没办法了只好用longtext,但是用这个就会出现异常,{"Incorrect string value: '\\xC2\\xB7<a h...' for column 'html' at row 1"}