#c# #mysql #parameters #null #odbc
#c# #mysql #параметры #null #odbc
Вопрос:
Хорошо, итак, я получаю странную ошибку с этой функцией. В нем говорится:
Exception Details: System.Data.Odbc.OdbcException: ERROR [HY000] [MySQL][ODBC 5.1 Driver][mysqld-5.0.27-community-nt]Column 'CommentNumber' cannot be null
Но я могу проверить, что переменная commentnumber действительно получает значение. Если я отправлю ответ.Напишите прямо перед
command.Parameters.Add("@CommentNumber", commentnumber);"
строка, которую я получаю, возвращает 1 (что правильно).
public string commenter(string commentnumber, string postnumber, string commentname, string commentemail, string comment) {
OdbcConnection connection = new OdbcConnection();
connection.ConnectionString = "server=<address>;"
"database=<database>;"
"uid=<username>;"
"password=<password>;"
"DRIVER={MySQL ODBC 5.1 Driver}";
string CommandText = "INSERT INTO Comments (CommentNumber, PostNumber, Name, Email, PostTime, Comment) VALUES (@CommentNumber, @PostNumber, @Name, @Email, @PostTime, @Comment)";
connection.Open();
try {
OdbcCommand command = new OdbcCommand(CommandText, connection);
command.Parameters.Add("@CommentNumber", commentnumber);
command.Parameters.Add("@PostNumber", postnumber);
command.Parameters.Add("@Name", commentname);
command.Parameters.Add("@Email", commentemail);
command.Parameters.Add("@PostTime", DateTime.Now);
command.Parameters.Add("@Comment", comment);
command.ExecuteNonQuery();
command.Dispose();
command = null;
}
catch(Exception ex) {
// Response.Write("There's been a problem. Please contact technical support.");
throw new Exception(ex.ToString(), ex);
Response.End();
}
finally {
connection.Close();
}
return "Success!";
}
Ответ №1:
ODBC использует ?
для placholders. Поскольку вы используете @CommandNumber
в необработанной строке sql, MySQL фактически интерпретирует ее как неопределенную переменную на стороне сервера, отсюда ошибка «не может быть нулевым».
Ответ №2:
Вторым параметром является OdbcType
, а не значение. Попробуйте использовать .AddWithValue()
Ответ №3:
К какому типу относится поле CommentNumber?. Указывает тип параметра для добавления командой.Параметры