System.ArgumentException:“键 'attachdbfilename' 的值无效。”
Posted
技术标签:
【中文标题】System.ArgumentException:“键 \'attachdbfilename\' 的值无效。”【英文标题】:System.ArgumentException: 'Invalid value for key 'attachdbfilename'.'System.ArgumentException:“键 'attachdbfilename' 的值无效。” 【发布时间】: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 请看Bad habits: Using AttachDBFileName和***.com/questions/11178720/… 【参考方案1】:必须不带空格:
AttachDbFilename=|DataDirectory|\Filename.mdf
请注意,如果需要,您可以使用绝对路径:
AttachDbFilename=C:\MyDatabases\Filename.mdf
【讨论】:
以上是关于System.ArgumentException:“键 'attachdbfilename' 的值无效。”的主要内容,如果未能解决你的问题,请参考以下文章
System.ArgumentException: 无法找到字体“?”。
CreateSQLQuery(string) 抛出 System.ArgumentException
HttpClient 抛出 System.ArgumentException:'windows-1251' 不是受支持的编码名称
System.ArgumentException 路径中的非法字符
尝试使用 DataGridViewComboBox 和 ValueMember 时出现 System.ArgumentException