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

我正在尝试将记录添加到 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 删除该列)。我已将数据集更改为不包含“照片”字段,但仍然收到错误消息。对解决方案的任何推动将不胜感激。此处包含数据集的快照。


我的数据集,其中我删除了照片列:

http://img2.mukewang.com/61e3bde2000163e701660228.jpg

小唯快跑啊
浏览 170回答 1
1回答

交互式爱情

如果您的数据库仍有该photos字段,则需要明确指定要插入的列。因此,将您的插入更改为:string query = "INSERT INTO entries (date, tags, entry, user) VALUES (@Date, @Tags, @Entry, @User)";通常,您希望明确地插入插入。如果有人在标签之后和进入数据库之前添加一列会发生什么?这会破坏你的代码。
打开App,查看更多内容
随时随地看视频慕课网APP