这是我的C#代码,我收到此错误
只有在使用列列表并且IDENTITY_INSERT为ON时,才能指定表'tblImages'中标识列的显式值。
public partial class _Default : System.Web.UI.Page
{
// string strconn= ConfigurationManager.ConnectionStrings["con"].ConnectionString;
SqlConnection conn=new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=E:\Final_Year_Project\ProjectFiles\ComSysForDeafAndDumb\App_Data\Database.mdf;Integrated Security=True");
static string query="";
static int myID = 989;
static string imgName;
static string imgSize;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
lblMessage.Visible = false;
hyperlink.Visible = false;
}
}
protected void btnUpload_Click(object sender, EventArgs e)
{
string b = "";
FileUpload1.SaveAs(Request.PhysicalApplicationPath +"./images/"+ FileUpload1.FileName.ToString());
b="~/images/"+ FileUpload1.FileName.ToString();
query = "insert into tblImages values ("+myID+",'"+imgName+"','"+imgSize+"','"+b+"','"+txtdes.Value+"')";
SqlCommand cmd = new SqlCommand(query, conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
Response.Write("successful");
imgUpload.ImageUrl = b;
}
}
答案 0 :(得分:0)
执行此操作时:
insert into tblImages values (123, 'some value', 'another value')
数据库将提供的值直接映射到表中的列列表。但是您的某个列不允许显式插入值。特别是标识列,通常是表中的第一列,通常称为ID
。
不是尝试插入所有列,而是显式插入所需的列。我们不知道你的表的结构,但作为一个例子,INSERT
命令看起来像这样:
insert into tblImages (ImageName, ImageSize) values ('some value', 'another value')
ImageName
和ImageSize
是您的列的名称。展开它以包括要插入值的所有列,并包括您尝试为该记录插入的所有值。基本上,明确指定要写入哪些列,不尝试写入标识列。
此外,这很重要,您的代码全开到 SQL注入。 This question有一些很好的解释和如何解决这个问题的例子。基本上,您应始终将用户输入视为值而不是SQL命令中的可执行代码。