【发布时间】:2021-07-18 19:49:36
【问题描述】:
从我的单选按钮列表中选择候选人后,每次按下“投票”按钮时,我都会尝试更新我的 SQL Server 数据库中的投票计数。
单选按钮列表有 3 个候选人,一旦选择了候选人,就会按下投票按钮。我希望我的数据库在按下投票按钮后更新。但是,我尝试了许多不同的解决方案,但都没有成功。
我的数据库有一个表,其中包含 Id 键(数字 ID)、Name(候选人姓名)和 Vote(相应候选人的票数)。
这是我最新的尝试:
public void update_db(string candidate)
{
const string connString = @"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename =| DataDirectory |\Candidates.mdf; Integrated Security = True";
SqlConnection conn = new SqlConnection(connString);
conn.Open();
SqlCommand cmd = new SqlCommand("UPDATE Vote SET Vote=Vote+1 WHERE name='" + candidate + "'", conn);
cmd.ExecuteNonQuery();
conn.Close();
}
但是,当我运行我的项目时,以下行出现以下错误:
SqlConnection conn = new SqlConnection(connString);
System.ArgumentException: '键 'attachdbfilename' 的值无效。'
我还尝试从 Visual Studio 的属性菜单中将 UpdateQuery 更改为 SqlDataSource1。
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT * FROM [Table]"
UpdateCommand="UPDATE Candidates SET Vote = Vote+1 WHERE Vote = @id2 ">
<UpdateParameters>
<asp:ControlParameter ControlID="RadioButtonList1" Name="id2" PropertyName="SelectedValue" />
</UpdateParameters>
</asp:SqlDataSource>
【问题讨论】:
-
SQL Injection alert - 您应该不将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入 - 查看Little Bobby Tables
标签: c# asp.net sql-server webforms