我目前正在为Visual Studio 2015和SQL服务器的商业社会开展一个小项目。我有两个组合框“AccountCode”和“AccountNo”。我想让“AccountNo”组合框改变它的值,与“AccountCode”下拉列表中的文本选择相对应。但我得到以下错误:
System.Data.dll中出现'System.Data.SqlClient.SqlException'类型的异常,但未在用户代码中处理
附加信息:无法绑定多部分标识符“System.Data.DataRowView”。
private void cmBxAccountCode_DataEntry_SelectedIndexChanged(object sender, EventArgs e)
{
cmBxAccountNo_DataEntry.ResetText();
cmBxAccountNo_DataEntry.Refresh();
DataSet ds = new DataSet();
da.SelectCommand = new SqlCommand("SELECT ID,ACCOUNTNO FROM AccountHolder WHERE ACCOUNTCODE =" + cmBxAccountCode_DataEntry.Text, SQLConnection.con);
da.Fill(ds);
cmBxAccountNo_DataEntry.DataSource = ds.Tables[0];
cmBxAccountNo_DataEntry.DisplayMember = "ACCOUNTNO";
cmBxAccountNo_DataEntry.ValueMember = "ID";
}
答案 0 :(得分:0)
您的查询应该是这样的:
SELECT ID,ACCOUNTNO FROM AccountHolder WHERE ACCOUNTCODE ='" + cmBxAccountCode_DataEntry.Text + "'"
但我强烈建议您使用参数化查询以避免注入;并且还为Text
取代选定的值(但它是根据数据库中的值)。参数化查询将如下所示:
// Code here
SqlCommand selectCommand= new SqlCommand("SELECT ID,ACCOUNTNO FROM AccountHolder WHERE ACCOUNTCODE =@accountCode", SQLConnection.con);
selectCommand.Parameters.Add("@accountCode", SqlDbType.VarChar).Value = cmBxAccountCode_DataEntry.Text;
// execute here