MySQL ODBC Параметр выпуска - PullRequest
1 голос
/ 09 ноября 2011

Хорошо, я получаю странную ошибку с этой функцией. Это говорит:

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 действительно получает значение. Если я поставлю Response.Write прямо перед

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!";

}

Ответы [ 3 ]

2 голосов
/ 09 ноября 2011

ODBC использует ? для плахолдеров. Поскольку вы используете @CommandNumber в необработанной строке sql, MySQL фактически интерпретирует ее как неопределенную переменную на стороне сервера, поэтому возникает ошибка «не может быть пустым».

1 голос
/ 09 ноября 2011

Вторым параметром является OdbcType, а не значение.Попробуйте использовать .AddWithValue()

0 голосов
/ 09 ноября 2011

К какому типу относится поле CommentNumber ?.Определяет тип параметра для добавления команды. Параметры

...