我正在尝试使用以下代码插入mysql表:
// open connection here
this.conn.Open();
// fields from post request
var email = Request.Form["email"];
var password = Request.Form["password"];
string sqlInsert = "INSERT INTO mytable(col1, col2) values(?email, ?password)";
MySqlCommand cmd1 = new MySqlCommand(sqlInsert, this.conn);
cmd1.Parameters.Add("?email", email);
cmd1.Parameters.Add("?password", password);
cmd1.ExecuteNonQuery();
此处:cmd1.Parameters.Add("?email", email);
我遇到了错误:
无法从“字符串”转换为“ MySql.Data.MySqlClient.mysqlDBType”
我做错了什么?
答案 0 :(得分:5)
您以错误的方式使用Add
方法。
应为cmd1.Parameters.Add("?email", MySqlDbType.VarString).Value = email;
(如果需要,您可以选择另一个重载,但这在大多数情况下是最容易使用的。)
注意:我猜email
的数据类型为VarString
。
答案 1 :(得分:1)
嗨,您需要将字符串参数转换为MySQL Db类型参数,我通常在这样的代码中创建一个函数:
protected DbParameter GetParameter(string parameterName, object parameterValue)
{
DbParameter parameterObject = new MySqlParameter(parameterName,
parameterValue ?? DBNull.Value);
//this defines if it is an input or output parameter
// you can also have output paramters
parameterObject.Direction = ParameterDirection.Input;
return parameterObject;
}
并将其称为我们的代码,如下所示:
var somevariable = "somevalue";
var parameters = new List<DbParameter>
{
base.GetParameter("parametermnamehere", somevariable),
};
简单干净,希望对您有所帮助