winform把EXCEL数据导入access行内含有特殊字符

bulls5988 2021-01-18 02:34:08
由于里面有的数据有特殊字符,导致导入失败。这个怎么解决好呢?
现在里面数据有一行是这样的:
大商集团/新玛特-鞍山总店/仕女名品馆/1F化妆品/ADOPT'香水




DataTable exdtc = xslcdata();
OleDbCommand deletecmd7 = new OleDbCommand("delete from 超卖盒子表", conn);
deletecmd7.ExecuteNonQuery();
for (int i = 0; i < exdtc.Rows.Count; i++)
{
string yz = exdtc.Rows[i][3].ToString();

string kts = exdtc.Rows[i][4].ToString();

if (yz != "")
{
OleDbCommand insertcmd7 = new OleDbCommand("insert into 超卖盒子表" +
" (盒子业种,盒子状态)" +
" values ('" + yz + "','" + kts + "')", conn);
insertcmd7.ExecuteNonQuery();
}
}
conn.Close();

break;
...全文
237 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lich2005 2021-01-21
  • 打赏
  • 举报
回复
如果不嫌麻烦,用存储过程,传参处理;如果嫌麻烦,客户要求不高,在写数据之前,把单引号替换成空格之类的,再写入数据。
HerryDong 2021-01-20
  • 打赏
  • 举报
回复
你这代码别人一注入就GG了~
 OleDbParameter[] parameters =
            {
                new OleDbParameter("@yz", exdtc.Rows[i][3].ToString()),
                new OleDbParameter("@kts", exdtc.Rows[i][4].ToString())
            };
            OleDbCommand command = new OleDbCommand("insert into 超卖盒子表(盒子业种,盒子状态) values(@yz,@kts)", connection);
            command.Parameters.AddRange(parameters);
参数化的SQL不香么?看起来也清晰明了
bulls5988 2021-01-20
  • 打赏
  • 举报
回复
用存储过程就不过存在问题了?
ziqi0716 2021-01-19
  • 打赏
  • 举报
回复
中文表名用单引号引起来
极客诗人 2021-01-18
  • 打赏
  • 举报
回复
sql传参 。 再不济用StringBuffer拼也好啊。
HttpCookie 2021-01-18
  • 打赏
  • 举报
回复
把需要传递的值参数化!
qq_30335331 2021-01-18
  • 打赏
  • 举报
回复
使用参数 不要自己拼接
bulls5988 2021-01-18
  • 打赏
  • 举报
回复
C# 能不能把 它转义成字符串
Bridge_go 2021-01-18
  • 打赏
  • 举报
回复
sql语句中有单引号时要用两个单引号替代一个单引号 (sqlserver是这样。access你试试)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧