我有一个使用 Visual Studios 2017 的 C# 前端到 SQL Server 后端。当我最初在数据库中创建我的表时,它是:CREATE TABLE [dbo].[tblHazard_Reports]( [Id] INT PRIMARY KEY, [Badge] INT NOT NULL, [Full Name] VARCHAR NOT NULL)从那以后,我将其更改为CREATE TABLE [dbo].[tblHazard_Reports]( [Id] INT IDENTITY(1, 1) PRIMARY KEY, [Badge] INT, [Full Name] VARCHAR(MAX))但是,当我运行我的SQLcmd.ExecuteNonQuery()语句时,我会得到列不允许 NULL 或字符串或二进制数据将被截断的错误。尽管我项目中的所有内容似乎都表明我对列进行了更改,但我得到的错误就像我从未接触过它一样。我在网上寻找在 Visual Studio 中放置正确 ALTER 语句的地方,但我找不到任何东西。如何重建我的表以反映我所做的更改?这是我的 C# 代码,以防万一。private void InsertHazardItem(E3_Project.HazardItem currHaz){ using(SqlConnection cnn = new SqlConnection("connectionString")) { string commandString = "INSERT INTO tblHazard_Reports([ID], [Badge], [Full Name]) VALUES(@ID, @Badge, @Name)"; using(SqlCommand command = new SqlCommand(commandString, cnn)) { var parameterID = new SqlParameter("@ID", System.Data.SqlDbType.Int); var parameterBadge = new SqlParameter("@Badge", System.Data.SqlDbType.Int); var parameterName = new SqlParameter("@Name", System.Data.SqlDbType.VarChar); parameterID.Value = currHaz.ID; parameterBadge.Value = currHaz.Badge; parameterName.Value = currHaz.Name; command.Parameters.Add(parameterID); command.Parameters.Add(parameterBadge); command.Parameters.Add(parameterName); cnn.Open() command.ExecuteNonQuery(); //The error is always on this line } }}请注意,ID 应该是自动递增的,但我将其包含在此处,因为再次看来,我对表的更改似乎还没有建立。
2 回答
炎炎设计
TA贡献1808条经验 获得超4个赞
由于您将 ID 列定义为 IDENTITY 列,因此数据库会在您插入行时负责设置该值。尝试从 INSERT 语句中删除 ID 列,它应该可以工作。
未经请求的提示:如果您的列名中不包含空格,您和曾经使用过您的数据库的每个人都会更快乐。[Full Name] 最好是 FullName。
- 2 回答
- 0 关注
- 154 浏览
添加回答
举报
0/150
提交
取消