Html System.Data.SqlClient.SqlException:语法错误
我正在尝试创建一个管理仪表板,并在同一仪表板中创建一个添加文章的选项。出于某种原因,我得到了这个错误: System.Data.SqlClient.SqlException:关键字“file”附近的语法不正确 这是我试图构建的“新闻门户”所用代码的一部分。这是仪表板aspx页面后面的服务器端代码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(
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()
-这可能会导致意外的结果。。。