Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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/2/image-processing/2.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
Html System.Data.SqlClient.SqlException:语法错误_Html_Sql_Asp.net_Sql Server_Sql Insert - Fatal编程技术网

Html System.Data.SqlClient.SqlException:语法错误

Html System.Data.SqlClient.SqlException:语法错误,html,sql,asp.net,sql-server,sql-insert,Html,Sql,Asp.net,Sql Server,Sql Insert,我正在尝试创建一个管理仪表板,并在同一仪表板中创建一个添加文章的选项。出于某种原因,我得到了这个错误: System.Data.SqlClient.SqlException:关键字“file”附近的语法不正确 这是我试图构建的“新闻门户”所用代码的一部分。这是仪表板aspx页面后面的服务器端代码 protected void Publish_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection(

我正在尝试创建一个管理仪表板,并在同一仪表板中创建一个添加文章的选项。出于某种原因,我得到了这个错误:

System.Data.SqlClient.SqlException:关键字“file”附近的语法不正确

这是我试图构建的“新闻门户”所用代码的一部分。这是仪表板aspx页面后面的服务器端代码

protected void Publish_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

    con.Open();
    string command = "INSERT INTO Articles(title,author,content,file,tags) VALUES(@title,@author,@content,@file,@tags)";
    SqlCommand cmd = new SqlCommand(command, con);

    cmd.Parameters.AddWithValue("@title", Title1.Text);
    cmd.Parameters.AddWithValue("@author", Author.Text);
    cmd.Parameters.AddWithValue("@content", Content.Text);
    string strImg = System.IO.Path.GetFileName(File1.PostedFile.FileName);
    cmd.Parameters.AddWithValue("@file", strImg);
    cmd.Parameters.AddWithValue("@tags", Tag.Text);
    cmd.ExecuteNonQuery();
    con.Close();
    File1.PostedFile.SaveAs(Server.MapPath("Images\\") + strImg);
}

每次按下“发布”按钮时都会出现此错误。

这可能是因为
文件是一个文件,因此需要用方括号括起来:

string command = "INSERT INTO Articles(title,author,content,[file],tags) VALUES(@title,@author,@content,@file,@tags)";

谢谢你的回复!错误消失了,但出现了一个新的错误。“System.Data.SqlClient.SqlException:不允许从数据类型nvarchar隐式转换为VARBINAL(max)。请使用CONVERT函数运行此查询。”因此,您的
文件
列是一个
VARBINAL(max)
,但您正试图针对它插入一个字符串。您需要查看如何使用查询将二进制文件保存到sql server,而不仅仅是文件名。如果您仍然遇到麻烦,您应该问另一个问题,概述您对它所做的研究。@marom,也要避免并指定正确的SQL数据类型<最大长度为-1的code>VarBinary
适用于
VarBinary(max)
,并且您的客户端类型应该是字节数组。您应该签出并停止使用
.AddWithValue()
-这可能会导致意外的结果。。。