我正在导入Excel电子表格以便插入MySql数据库。这是电子表格中的一条记录:
Loc Item Description
FAB12 0121G00667PDG PNL DUCT 27.5"
我正在使用OleDbDataReader
来获取DataTable
,这是有效的。我遇到的问题是尝试用"
替换\"
以便MySql接受双引号。我想让C#将27.5"
更改为27.5\"
感谢您提供的任何帮助。
这是我现在得到的结果:
INSERT INTO test_table2 (Loc, Item, Description) VALUES ("FAB12
","0121G00667PDG","PNL DUCT 27.5"")
以下是代码:
for (int i = 0; i < dtSheet.Rows.Count; i++)
{
DataRow dr = dtSheet.Rows[i];
for (int j = 0; j < dtSheet.Columns.Count; j++)
{
DataColumn dc = dtSheet.Columns[j];
if (dr[j].ToString().Contains("\""))
{
Console.WriteLine(dr[j].ToString());
dr[j].ToString().Replace("\"", "\\\"");
//need the backslash for mysql to escape "
//so trying to get "PNL DUCT 27.5\""
Console.WriteLine(dr[j].ToString());
}
这是Majid的解决方案。使用预准备语句允许将双引号插入到MySql中 尝试 { conn.Open(); cmd.Connection = conn;
cmd.CommandText = "INSERT INTO test_table2 (Loc, Item, Description) VALUES( @Loc, @Item, @Desc )";
cmd.Prepare();
cmd.Parameters.AddWithValue("@Loc", "Loc");
cmd.Parameters.AddWithValue("@Item", "Item");
cmd.Parameters.AddWithValue("@Desc", "Desc");
foreach (DataRow row in dtSheet.Rows)
{
cmd.Parameters["@Loc"].Value = row[0];
cmd.Parameters["@Item"].Value = row[1];
cmd.Parameters["@Desc"].Value = row[2];
Console.WriteLine(cmd.ToString());
cmd.ExecuteNonQuery();
}
}
答案 0 :(得分:0)
尝试使用:
Math.random
答案 1 :(得分:0)
使用参数或此value.Replace("\\","\\\\")