我正在尝试这种编码,这个编码中的错误是什么:
private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source =TWPL-PC\\SQLEXPRESS;Initial Catalog=TWPLSOFTWARE;Integrated security = True");
con.Open();
SqlCommand cmd = new SqlCommand("select ACC_ID ,ACC_TYPE ,ACC_ADD,ACC_CITY ,ACC_STATE ,ACC_COUNTRY ,ACC_TIN_N0 ,ACC_ECC_NO,ACC_RANGE,ACC_DIVISION ,ACC_COMMISS ,ACC_GST_NO ,ACC_CONTACT_PERSON ,ACC_PHONE_NO ,ACC_MOBILE_NO ,ACC_EMAIL ,ACC_PRICE_CODE ,ACC_APPROVAL_STATUS,ACC_PAN_NO from ACCOUNT where ACC_NAME='" + comboBox2.SelectedItem.ToString() + "'", con);
cmd.Parameters.Add(new SqlParameter("@ACC_NAME", comboBox2.SelectedItem.ToString()));
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
textBox17.Text = dr.GetString(0).ToString();
comboBox1.SelectedItem = dr.GetString(1).ToString();
richTextBox1.Text = dr.GetString(2).ToString();
textBox2.Text = dr.GetString(3).ToString();
textBox3.Text = dr.GetString(4).ToString();
textBox4.Text = dr.GetString(5).ToString();
textBox9.Text = dr.GetString(6).ToString();
textBox11.Text = dr.GetString(7).ToString();
textBox13.Text = dr.GetString(8).ToString();
textBox14.Text = dr.GetString(9).ToString();
textBox16.Text = dr.GetString(10).ToString();
textBox12.Text = dr.GetString(11).ToString();
textBox5.Text = dr.GetString(12).ToString();
textBox6.Text = dr.GetString(13).ToString();
textBox8.Text = dr.GetString(14).ToString();
textBox7.Text = dr.GetString(15).ToString();
textBox15.Text = dr.GetString(16).ToString();
//checkBox1.Checked=dr.GetString().ToString();
textBox10.Text = dr.GetString(18).ToString();
}
}
这是我的问题:
“数据类型text和varchar在等于中是不兼容的 运算符“。
答案 0 :(得分:2)
您首先在查询中分配@ACC_NAME
变量,然后再次添加为参数。从MSDN中查看SqlCommand.Parameters
。
试试这个;
SqlCommand cmd = new SqlCommand("select ACC_ID ,ACC_TYPE ,ACC_ADD,ACC_CITY ,ACC_STATE ,ACC_COUNTRY ,ACC_TIN_N0 ,ACC_ECC_NO,ACC_RANGE,ACC_DIVISION ,ACC_COMMISS ,ACC_GST_NO ,ACC_CONTACT_PERSON ,ACC_PHONE_NO ,ACC_MOBILE_NO ,ACC_EMAIL ,ACC_PRICE_CODE ,ACC_APPROVAL_STATUS,ACC_PAN_NO from ACCOUNT where ACC_NAME=@ACC_NAME;", con);
cmd.Parameters.AddWithValue("@ACC_NAME", comboBox2.SelectedItem.ToString()));
同样基于您的错误消息;
数据类型text和varchar在等于中是不兼容的 操作
在您的数据库中,我认为您的ACC_NAME
列类型为text
。这就是为什么当你尝试在字符串中使用它时会出现错误的原因。你有两个选择;
ACC_NAME
列类型更改为数据库中的nvarchar
。不推荐使用Text
数据类型。LIKE
子句中使用=
运算符代替WHERE
。您无法与text
运算符进行=
比较。尝试; ACC_NAME喜欢@ACC_NAME;
答案 1 :(得分:0)
我认为这是一个winform项目,错误来自
comboBox2.SelectedItem.ToString()
如果comboBox2绑定到数据源,请尝试使用SelectedValue或SelectedText
否则你也可以使用Combobox的Text属性
答案 2 :(得分:0)
SQL查询中没有@ACC_NAME参数。修改您的查询,如
SqlCommand cmd = new SqlCommand("select ACC_ID ,ACC_TYPE ,ACC_ADD,ACC_CITY ,ACC_STATE ,ACC_COUNTRY ,ACC_TIN_N0 ,ACC_ECC_NO,ACC_RANGE,ACC_DIVISION ,ACC_COMMISS ,ACC_GST_NO ,ACC_CONTACT_PERSON ,ACC_PHONE_NO ,ACC_MOBILE_NO ,ACC_EMAIL ,ACC_PRICE_CODE ,ACC_APPROVAL_STATUS,ACC_PAN_NO from ACCOUNT where ACC_NAME=@ACC_NAME;", con);
或删除cmd.Parameters.Add(new SqlParameter("@ACC_NAME", comboBox2.SelectedItem.ToString()));
声明。
编辑:
comboBox1.SelectedItem = dr.GetString(1).ToString();
似乎导致了问题。
我建议使用comboBox2.Text = dr.GetString(1).ToString();
或更高版本来设置comboBox2.SelectedIndex