C# ASP.NET SQL插入错误
在ASP.NET中,我尝试使用insert语句配置DetailsView控件。我运行insert命令,发现错误: “列“地址”不能为空” 我的SQL:C# ASP.NET SQL插入错误,c#,asp.net,mysql,sql,sql-server,C#,Asp.net,Mysql,Sql,Sql Server,在ASP.NET中,我尝试使用insert语句配置DetailsView控件。我运行insert命令,发现错误: “列“地址”不能为空” 我的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,Bir
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语法错误。
谢谢您似乎没有输入学生表的所有列。试着做
INSERT INTO Students (*column names*) VALUES (*values*)
这将确保即使您添加了一个新列,您的查询也能正常工作,并帮助您快速进行健全性检查,以确保您拥有所需的所有列
编辑:
根据你的新结果,我发现了问题所在。您的SQL是错误的。应该是这样的:
插入学生(姓名)值(@Name)
您不应该在值部分中使用列名=参数名
编辑2:
对于“地址不能为空错误”,您需要检查插入到地址中的值。它是数据库中不可为null的字段,您输入的值为null。这会让您向用户返回一个错误,表示他们需要地址。您似乎没有为Students表输入所有列。试着做
INSERT INTO Students (*column names*) VALUES (*values*)
这将确保即使您添加了一个新列,您的查询也能正常工作,并帮助您快速进行健全性检查,以确保您拥有所需的所有列
编辑:
根据你的新结果,我发现了问题所在。您的SQL是错误的。应该是这样的:
插入学生(姓名)值(@Name)
您不应该在值部分中使用列名=参数名
编辑2:
对于“地址不能为空错误”,您需要检查插入到地址中的值。它是数据库中不可为null的字段,您输入的值为null。这应该会让您向用户返回一个错误,说他们需要地址。您为insert编写的语法对我来说很奇怪 应该是,
Insert into table_name (col1, col2) values (@val_col1, @val_col2)
我觉得您为insert编写的语法很奇怪 应该是,
Insert into table_name (col1, col2) values (@val_col1, @val_col2)
看起来有点简单。你还卡住了吗 似乎有点简单。你还卡住了吗 这是MySQL的。请看上面我编辑的专栏。我应该只使用@values而不是每个列名=@something吗?这是针对MySQL的。请看上面我编辑的专栏。我应该只使用@values而不是每个列名=@something吗?我已经更新了这些列。新的错误出现了:“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在“
,
riture\u-Proficiency,
Library\u-Hours)值(
Name=@Name,
Address`=@Address'第1行)附近使用的正确语法。”@Klinetel您使用反勾号而不是单引号有什么原因吗?我不记得在使用SQLNot时,我最初使用它们来表示中间有空格的列(两个单词)。但这可能不会有什么区别。@Klinetel我已根据您的最新编辑更新了我的答案。我已更新了列。新错误显示:“您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以了解在第1行的“,
标准,
库时数)值(
名称=@Name,
地址`=@Address”附近使用的正确语法。”“@Klinetel您使用反勾号而不是单引号有什么原因吗?我不记得在执行SQLNot时,我最初使用它们来表示中间有空格(两个单词)的列。这可能不会有什么区别。@Klinetel我已经根据您最新的编辑更新了我的答案。发布参数。另外,问题似乎是控件在此处的任何文本框中都不能接受空白值。我想我将尝试使用try/catch块。请发布您的SQL表属性及其数据类型谢谢,但逻辑below完全回答了这个问题。我感谢您的帮助。发布参数。另外,问题似乎是控件无法接受此处任何文本框中的空白值。我想我将尝试使用try/catch块。请发布您的SQL表属性及其数据类型谢谢,但下面的逻辑完全回答了这个问题。I感谢你愿意帮忙。