【发布时间】:2012-02-19 02:30:23
【问题描述】:
我正在使用 Visual Studio 2010 c# 在 mysql 数据库中插入大量二进制数据,但插入时出现以下错误:
Exception is+ 连接已被禁用。StackTrace= at System.Data.Odbc.OdbcConnection.ConnectionIsAlive(异常 内部异常)在 System.Data.Odbc.OdbcConnection.HandleErrorNoThrow(OdbcHandle hrHandle,RetCode 重新编码)在 System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle, RetCode retcode) 在 System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior 行为,字符串方法,布尔需要读取器,对象[] 方法参数, SQL_API odbcApiMethod) 在 System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior 行为,字符串方法,布尔需要读取器)在 System.Data.Odbc.OdbcCommand.ExecuteNonQuery() 在 UploadFile.btnFileUpload_Click1(Object sender, EventArgs e) in c:\inetpub\wwwroot\computingClient\UploadFile.aspx.cs:133 行
Mysql 数据类型为 LONGBLOB 这是我的代码:
string connStr = ConfigurationManager.AppSettings["connectionString"];
OdbcConnection conn = new OdbcConnection(connStr);
conn.Open();
OdbcCommand cmd = conn.CreateCommand();
string sql = "insert into uploadeddata values(?,?,?,?,?)";
//cmd.CommandText = "insert into uploadeddata values(0 ,'" + fileName + "'," + id +",'"+strTokens +"')";
cmd.CommandText = sql;
cmd.Parameters.AddWithValue("@id", 0);
cmd.Parameters.AddWithValue("@filename", fileName);
cmd.Parameters.AddWithValue("@ServerKey", id);
cmd.Parameters.AddWithValue("@Token", strTokens);
cmd.Parameters.AddWithValue("@userId", Session["LoggedInUserId"]);
//Logger.writeLog(@"D:\Cloud Computing\CloudClient\Log\Log.txt","id:"+id+",filename:"+fileName+",userid:"+Session["LoggedInUserId"]+",strtokens:"+strTokens);
cmd.ExecuteNonQuery();
conn.Close();
progressCounter = 100;
//progress.SecondaryValue = progressCounter;
//progress.SecondaryPercent = progressCounter;
string script = "<script>alert('File uploaded successfully');</script>";
ClientScript.RegisterClientScriptBlock(this.GetType(), script, script);
【问题讨论】:
-
你在哪里插入二进制数据?
-
什么版本的MySql,MySql 5及以上支持names参数,不需要像SqlServer一样在前面加上“@”符号。我也建议你看看使用Native .Net连接器不是 ODBC,因为它本质上更快并且提供更好的 TypeConversion 语义。dev.mysql.com/downloads/connector/net
-
@Lloyd 非常好的评论。值得回答!