【问题标题】:ASP.NET SQL Insert ErrorASP.NET SQL 插入错误
【发布时间】:2013-05-05 19:15:34
【问题描述】:

在 ASP.NET 中,我尝试使用插入语句配置 DetailsView 控件。我运行插入命令并收到错误:

“列'地址'不能为空”

我的 SQL:

INSERT INTO Students (Name, Address,College_Status,Email,Fraternity_Status,Major,Pledge_Class,Ship_ID,Dues_Paid,Service_Hours,Money_Donated,Phone,Shirt_Size,Phone_Carrier,Birthday,Chair_Position,Ritual_Proficiency,Library_Hours)  Values (@Name,@Address,@College_Status,@Email,@Fraternity_Status,@Major,@Pledge_Class,@Ship_ID,@Dues_Paid,@Service_Hours,@Money_Donated,@Phone,@Shirt_Size,@Phone_Carrier,@Birthday,@Chair_Position,@Ritual_Proficiency,@Library_Hours)

任何想法将不胜感激。我认为这只是一个简单的 SQL 语法错误。 谢谢

【问题讨论】:

  • 也发布参数
  • 问题似乎是控件不能在此处的任何文本框中接受空白值。我想我会尝试使用 try/catch 块。
  • 请发布您的 SQL 表属性及其数据类型
  • 谢谢,但下面的逻辑完全回答了这个问题。感谢您愿意提供帮助。

标签: c# asp.net mysql sql sql-server


【解决方案1】:

您似乎没有输入学生表的所有列。尝试做

INSERT INTO Students (*column names*) VALUES (*values*)

这将确保即使您添加了新列,您的查询也能正常工作,并帮助您进行快速的健全性检查,以确保您拥有所有需要的列。

编辑:

根据您的新结果,我看到了问题所在。你的 SQL 是错误的。应该是这样的:

插入学生(姓名)值(@Name)

您不应该在值部分使用列名 = 参数名。

编辑 2:

对于“地址不能为空错误”,您需要检查您插入地址的值。它是数据库中不可为空的字段,您输入的值为空。这应该让您向用户返回一个错误,说他们需要一个地址。

【讨论】:

  • 我已更新列。新的错误吐出:“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取在 ',Ritual_Proficiency,Library_Hours) Values (Name=@Name,Address 附近使用的正确语法`=@Address' 在第 1 行“
  • @Klinetel 您使用反引号而不是单引号是否有原因?我不记得在执行 SQL 时看到过这种情况
  • 不再了,我最初将它们用于中间有空格的列(两个单词)。
  • 不过应该​​没什么区别。
  • @Klinetel 我已根据您的最新编辑更新了我的答案。
【解决方案2】:

我为插入编写的语法看起来很奇怪。

应该是,

Insert into table_name (col1, col2) values (@val_col1, @val_col2)

【讨论】:

  • 这是给 MySQL 的。请看上面我编辑的专栏。我应该只使用@values 而不是每个列名 =@something?
【解决方案3】:

看起来有点简单。你还卡住了吗? http://sqlfiddle.com/#!2/47ed30/1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    相关资源
    最近更新 更多