我在C#中有一个.NET Wndows应用程序.这是一个使用MySql 5.1数据库社区版的简单Windows应用程序.我已经下载了MysqL ODBC驱动程序,并在本地计算机上创建了一个dsn到我的数据库.在我的应用程序中,我可以毫无问题地执行get类型查询,但是当我执行给定的insert语句时(不是我尝试过做任何其他语句),我收到以下错误:
{“ERROR [HY001] [MysqL] [ODBC 5.1驱动程序] [MysqLd-5.0.27-community-nt]内存分配错误”}
我在Windows XP机器上运行.我的机器有1 GB的内存.
有人有主意吗?见下面的代码
OdbcConnection MyConn = DBConnection.getDBConnection();
int result = -1;
try
{
MyConn.Open();
OdbcCommand myCmd = new OdbcCommand();
myCmd.Connection = MyConn;
myCmd.CommandType = CommandType.Text;
OdbcParameter userName = new OdbcParameter("@UserName",u.UserName);
OdbcParameter password = new OdbcParameter("@Password",u.Password);
OdbcParameter firstName = new OdbcParameter("@FirstName",u.FirstName);
OdbcParameter LastName = new OdbcParameter("@LastName",u.LastName);
OdbcParameter sex = new OdbcParameter("@sex",u.Sex);
myCmd.Parameters.Add(userName);
myCmd.Parameters.Add(password);
myCmd.Parameters.Add(firstName);
myCmd.Parameters.Add(LastName);
myCmd.Parameters.Add(sex);
myCmd.CommandText = MysqLQueries.insertChatUser;
result = myCmd.ExecuteNonQuery();
}
catch (Exception e)
{
//{"ERROR [HY001] [MysqL][ODBC 5.1 Driver][MysqLd-5.0.27-community-nt]Memory
// allocation error"} EXCEPTION ALWAYS THROWN HERE
}
finally
{
try
{
if (MyConn != null) MyConn.Close();
}
finally { }
}
最佳答案
这是因为有些字段接受null,我将它们作为null传递给它们,它们应该作为DBNull.Value传递.对于允许null的所有字段都应检查为null,如果找到null,则应传递DBNull.Value.