C# SQL插入在我的代码中不起作用
我的代码中有一个SQL插入,当我单击按钮时,它似乎在更新页面上的Textbox控件,而不是数据库。以下是背后的代码:C# SQL插入在我的代码中不起作用,c#,asp.net,sql,C#,Asp.net,Sql,我的代码中有一个SQL插入,当我单击按钮时,它似乎在更新页面上的Textbox控件,而不是数据库。以下是背后的代码: protected void UpdatePic(object sender, EventArgs e) { string constr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\TravelJoansDB.mdb;"; string cmdstr = "INSERT INTO
protected void UpdatePic(object sender, EventArgs e)
{
string constr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\TravelJoansDB.mdb;";
string cmdstr = "INSERT INTO BlogEntryItems(Picture) VALUES (@UpdatedPic)";
OleDbConnection con = new OleDbConnection(constr);
OleDbCommand com = new OleDbCommand(cmdstr, con);
TextBox uPic = (TextBox)DataList1.Items[1].FindControl("BEIPictureField");
con.Open();
com.Parameters.Add("@UpdatedPic", uPic.Text);
com.ExecuteNonQuery();
con.Close();
}
ASP代码用于OnClick事件调用此方法的按钮:
<asp:DataList ID="DataList1" runat="server" DataSourceID="AccessDataSource1">
<ItemStyle />
<ItemTemplate>
<table>
<tr>
<td>
<br />
<asp:Image ID="Image1" CssClass="placePicCenter" runat="server"
BorderWidth="1px"
BorderColor="#EEEEEE"
ImageUrl='<%# "PlaceImages/" + Eval("Picture") %>' /><br />
<asp:TextBox ID="BEIPictureField" runat="server" Text='<%# Bind("Picture") %>' /><br />
<asp:Button ID="UpdatePicButton" runat="server" Text="Update" OnClick="UpdatePic" />
<br />
</td>
</tr>
<tr>
<td>
<asp:Label ID="Label4" CssClass="placeBodyStyle" runat="server" Text='<%# Eval("PicText1") %>' />
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
</ItemTemplate>
</asp:DataList>
发生这种情况可能有多种原因,如果没有您提供的更多信息,这只是一个偶然的机会
下划线列的数据类型是什么?因为根据Microsoft Access的数据类型,blob/二进制具有不同的大小 根据:
- BigBinaryDBTYPE_字节4000字节
- LongBinaryDBTYPE_字节1073741823字节
- VarBinaryDBTYPE_字节510字节
string constr = @"Data Source=.\SQLEXPRESS;AttachDbFileName=e:\data\Customers.mdf;Integrated Security=True;User Instance=True";
从
ExecuteOnQuery
返回的值是什么?如果在visual studio中对此进行调试,ExecuteOnQuery()是否运行?另外,您如何检查您的数据库?有时这就是问题所在。如何检查ExecuteOnQuery命令返回的值?我通过打开数据库然后打开表来检查数据库。这是一个Access数据库。ExecuteNonQuery
返回一个整数,告诉您有多少行受到影响,而您的代码中没有捕获这些行;将值存储在变量中,例如var x=com.ExecuteNonQuery()
并将其打印到某个地方或在调试器中检查。我正在尝试使用System.Console.Writeline(),但在触发函数调用时它似乎没有显示任何内容。这应该作为注释而不是答案发布。发布它的人没有足够高的声誉来发布注释。这是正确的,Dan。很抱歉,如果它没有通过你的检查,Mike,但这是目前我尝试帮助其他用户的唯一方法。通过社区检查的最佳方法是将其重新表述为一个答案,其中列出了要尝试的事项。谢谢你的建议,George!相信我,下次我将使用SSE。基础数据类型是字符串。