为了账号安全,请及时绑定邮箱和手机立即绑定

将记录添加到 SQL Server 数据库时出错 (nvarchar)

将记录添加到 SQL Server 数据库时出错 (nvarchar)

C#
小唯快跑啊 2022-01-16 14:40:10
我正在尝试将记录添加到 SQL Server 数据库。该连接适用于除一个之外的任何其他表。这是我的代码:private void saveCurrent(){    try    // Save entry into the database.    {        string query = "INSERT INTO entries VALUES (@Date, @Tags, @Entry, @User)";        using (connection = new SqlConnection(connectionString))        using (SqlCommand command = new SqlCommand(query, connection))        {            connection.Open();            command.Parameters.AddWithValue("@Date", System.DateTime.Now.ToLongDateString());            command.Parameters.AddWithValue("@Tags", txtTags.Text);            command.Parameters.AddWithValue("@Entry", richEntryBox.Text);            command.Parameters.AddWithValue("@User", Form1.userName);            command.ExecuteNonQuery();            isDirty = false;        }    }    catch (Exception exception)    {        MessageBox.Show("There was an error saving this entry:  " + exception.ToString());    }错误是:System.Data.SqlClient.SqlException (0x8-131904):列名或提供的值的数量与表定义不匹配。所有列的类型都是nvarchar(50)和nvarchar(MAX)。我试图只输入文本信息,没有二进制文件。数据集显示该表有一个“照片”列,但它可以为空并且我没有使用它(由于某种原因,我无法让 VS2017 删除该列)。我已将数据集更改为不包含“照片”字段,但仍然收到错误消息。对解决方案的任何推动将不胜感激。此处包含数据集的快照。我的数据集,其中我删除了照片列:
查看完整描述

1 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

如果您的数据库仍有该photos字段,则需要明确指定要插入的列。

因此,将您的插入更改为:

string query = "INSERT INTO entries (date, tags, entry, user) VALUES (@Date, @Tags, @Entry, @User)";

通常,您希望明确地插入插入。如果有人在标签之后和进入数据库之前添加一列会发生什么?这会破坏你的代码。


查看完整回答
反对 回复 2022-01-16
  • 1 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信