Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向SQL Server数据库(nvarchar)添加记录时出错_C#_Sql Server_Database_Dataset - Fatal编程技术网

C# 向SQL Server数据库(nvarchar)添加记录时出错

C# 向SQL Server数据库(nvarchar)添加记录时出错,c#,sql-server,database,dataset,C#,Sql Server,Database,Dataset,我正在尝试将记录添加到SQL Server数据库。该连接适用于除一个表之外的任何其他表 这是我的代码: private void saveCurrent() { try // Save entry into the database. { string query = "INSERT INTO entries VALUES (@Date, @Tags, @Entry, @User)"; using (connection = new Sq

我正在尝试将记录添加到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)
。我试图只输入文本信息,而不是二进制文件。数据集显示该表有一个“photos”列,但它可以为null,我没有使用它(出于某种原因,我无法让VS2017删除该列)。我修改了数据集,使其不包含“photos”字段,但仍然收到错误。如能推动解决方案,我们将不胜感激。这里包含数据集的快照

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


--S

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

因此,请将插入内容更改为:

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

通常,您希望在插入时显式。如果有人在数据库中的标记之后和条目之前添加列,会发生什么情况?这将破坏您的代码。

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

因此,请将插入内容更改为:

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

通常,您希望在插入时显式。如果有人在数据库中的标记之后和条目之前添加列,会发生什么情况?这会破坏您的代码。

在我看来,第一列的类型是
DATE
不是吗?但是您尝试插入的值是一个“字符串”。这不起作用。您是否尝试过为相关字段指定数据类型?“Addwithvalue”的问题是,它试图猜测您的数据类型实际上每个表列的列类型是什么?是否涉及任何触发器?“date”字段不是标准日期,它是自定义的,是文本。我已经指定表中的所有字段都是nvarchar-这就是你的意思吗?不涉及触发器。在我看来,第一列的类型是
DATE
不是吗?但是您尝试插入的值是一个“字符串”。这不起作用。您是否尝试过为相关字段指定数据类型?“Addwithvalue”的问题是,它试图猜测您的数据类型实际上每个表列的列类型是什么?是否涉及任何触发器?“date”字段不是标准日期,它是自定义的,是文本。我已经指定表中的所有字段都是nvarchar-这就是你的意思吗?不用动扳机。谢谢你——这让我走得更远了。我修改了查询,使之与您列出的内容相匹配,并带有显式插入字段。奇怪的是,我现在得到一个错误“关键字“user”附近的语法不正确。谢谢!我有一个奇怪的拼写错误。得到纠正,使用您的建议显式添加字段,最后设法从数据库中删除照片字段,效果非常好。非常感谢!很高兴我能帮忙!谢谢,这让我走得更远了。我修改了查询,使之与您列出的内容相匹配,并带有显式插入字段。奇怪的是,我现在收到一个错误,上面写着“关键字“user”附近的语法不正确。谢谢!我有一个奇怪的拼写错误。得到纠正,使用你的建议显式添加字段,最后设法从数据库中删除photos字段,效果很好。非常感谢!很高兴我能提供帮助!