c# - MySql 说对于不为空的列,列不能为空! [使用命名参数]

标签 c# sql mysql database

我正在尝试通过 MySql/.NEt 连接器使用 .Net 执行 INSERT INTO 查询。查询使用参数。这很简单:

INSERT INTO post (
ID, content, post_url, blogID, title, addedOn, 
updatedDate, commentsFeedURL, active, viewCount, 
commentCount, languageID, authorName, postDate, 
posRating, negRating, adult) 
VALUES(
@ID, @content, @post_url, @blogID, @title, @addedOn, 
@updatedDate, @commentsFeedURL, @active, @viewCount, 
@commentCount, @languageID, @authorName, @postDate, 
@posRating, @negRating, @adult)

当我运行它时(所有参数都已正确分配)我得到一个错误

“‘post_url’列不能为空”

但它不是空的。这是参数post_url中的值

http://abcd.wordpress.com/2007/08/13/%e0%a4%a6%e0%a5%8b-%e0%a4%ae%e0%a4%bf%e0%a4%a8%e0%a4%9f-%e0%a4%95%e0%a4%be-%e0%a4%a7%e0%a5%8d%e0%a4%af%e0%a4%be%e0%a4%a8/

这是我用来将参数分配给 SQL 查询的代码

cmd.Parameters.AddWithValue("post_url", postOld.URL);

我出现这种行为的原因可能是什么?

最佳答案

好的伙计们,我终于找到了正确的答案。

问题很简单,在 MySQL 查询参数中用“?”标记不是 '@'。不幸的是,许多查询似乎使用“@”运行良好(实际上并非如此),所以当出现问题时,人们会在稍后发现这一点。

感谢您的所有回答。我像这样重写了我的查询:

INSERT INTO post (ID, content, post_url, blogID, title, addedOn, updatedDate, commentsFeedURL, active, viewCount, commentCount, languageID, authorName, postDate, posRating, negRating, adult)" +
                            " VALUES(?ID, ?content, ?post_url, ?blogID, ?title, ?addedOn, ?updatedDate, ?commentsFeedURL, ?active, ?viewCount, ?commentCount, ?languageID, ?authorName, ?postDate, ?posRating, ?negRating, ?adult)

它奏效了。

关于c# - MySql 说对于不为空的列,列不能为空! [使用命名参数],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1242466/

相关文章:

mysql - 如何使列值的唯一组合?

mysql - 重复值列表 SQL

mysql - SQL - 获取每个匹配字段的 bool 值

PHP/MySQL 使用长查询检查表之间的数据

c# - Selenium :意外错误。 System.Net.WebException:无法连接到远程服务器

c# - 我应该使用 CancellationTokenSource 还是 CancellationToken 来取消 .NET 中的任务

sql - T-SQL "dense_rank",每个等级的最大行数

c# - .indexOf 用于多个结果

C# - 使用 DataAdapter 从 DataTable 更新 SQL 表 - SQL 表不更新

sql - 使用宏将值传递给查询时,是否可以在不存在值的情况下继续查询?