C# 尝试读取结果集时遇到致命错误。MySQL Asp.Net
当我试图将txt文件中的数据插入mysql表时,我收到了这个错误。我尝试使用整个列表,仅使用1项,使用csv,甚至删除“”并创建一个仅使用一个字段的新表,但问题在30秒后继续发生。在我的txt中有一个数字列表,我需要在表的1个字段中插入这些数字,即使表有三个不同的字段。先谢谢你C# 尝试读取结果集时遇到致命错误。MySQL Asp.Net,c#,mysql,asp.net,C#,Mysql,Asp.net,当我试图将txt文件中的数据插入mysql表时,我收到了这个错误。我尝试使用整个列表,仅使用1项,使用csv,甚至删除“”并创建一个仅使用一个字段的新表,但问题在30秒后继续发生。在我的txt中有一个数字列表,我需要在表的1个字段中插入这些数字,即使表有三个不同的字段。先谢谢你 protected void Button1_Click(object sender, EventArgs e) { if (FileUploadControl.HasFile) { tr
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUploadControl.HasFile)
{
try
{
if (FileUploadControl.PostedFile.ContentType == "text/plain")
{
string filename = Path.GetFileName(FileUploadControl.FileName);
FileUploadControl.SaveAs(Server.MapPath("~/") + filename);
StatusLabel.Text = "Upload status: File, "+filename+" uploaded!";
string dir = Server.MapPath("~/") + filename;
string strcon = "SERVER = 000.000.000.00; " + "DATABASE=fakedb;" + "UID=fakeid;" +"PASSWORD=fakepass;";
Response.Write(dir);
MySqlConnection con = new MySqlConnection(strcon);
con.Open();
MySqlCommand cmd = new MySqlCommand("LOAD DATA LOCAL INFILE '" + filename + "' INTO TABLE Cuenta_Test LINES TERMINATED BY '\n\r'", con);
cmd.ExecuteNonQuery();
con.Close();
}
else
StatusLabel.Text = "Upload status: Only txt files are accepted!";
}
catch (Exception ex)
{
StatusLabel.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message;
}
}
}
您的
MySqlCommand
命令文本似乎不正确。它应该是这样的(请注意,您需要使用双反斜杠\\
而不是单反斜杠\
,以便C不将行终止符视为转义序列,它用于MySQL命令字符串):
MySqlCommand cmd=new MySqlCommand(“将数据本地填充“+filename+””加载到以“\\n\\r”结尾的表Cuenta\u测试行中,con);
或者将命令文本与字符串一起使用。格式如下所示:
MySqlCommand cmd=new MySqlCommand(string.Format(@“将数据本地填充“{0}”加载到以“\n\r”结尾的表Cuenta_测试行中),con);
注意:在读取CSV文件并将其内容保存到数据库时,您还可以使用以“,”结尾的字段作为字段分隔符
为确保成功加载数据命令,可以执行的其他建议:
1) 尝试在MySQL工作台中运行相同的命令。检查不正确的数据类型错误
2) 使用CommandTimeout
属性增加命令超时:
cmd.CommandTimeout=120;//2分钟(示例)
3) 在写入数据库之前规范化文本文件的行尾<代码>\n\r
转义与\r\n
不同(使用替换
,可能使用转义序列regex)