2013-01-08 87 views
0

我想這個編碼,從SQL數據庫中的值,是什麼在這個編碼錯誤:如何在C#中選擇組合框項目

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(); 

      }      

     } 

這是我的問題:

"The data types text and varchar are incompatible in the equal to operator."

+2

什麼是您的錯誤代碼?請更具體一些。先閱讀[常見問題]並[問]。 –

+0

你期望發生什麼,發生了什麼* –

+0

爲什麼在查詢中已經添加@ACC_NAME作爲參數? – prthrokz

回答

2

在查詢第一,那麼你特林再次添加作爲參數。從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 [email protected]_NAME;", con); 
cmd.Parameters.AddWithValue("@ACC_NAME", comboBox2.SelectedItem.ToString())); 

也基於您的錯誤信息;

The data types text and varchar are incompatible in the equal to operator.

在你的數據庫,我想你ACC_NAME列類型是text。這就是爲什麼當你試圖用字符串分析它時你會得到一個錯誤。你有兩個選擇;

  • 在您的數據庫中將ACC_NAME列的類型更改爲nvarcharText數據類型已棄用。
  • 在您的WHERE子句中使用LIKE運算符而不是=。您無法與text=運營商進行比較。嘗試;

where ACC_NAME LIKE @ACC_NAME;

+0

它不工作.......... plz另一個幫助 – user1915023

+1

你調試了你的代碼嗎?哪條線給你一個錯誤?請更具體一些。問這個問題之前你有沒有讀過[問]? –

+0

SqlDataReader dr = cmd.ExecuteReader();行給你一個錯誤:「數據類型文本和varchar在等於運算符中不兼容。」 – user1915023

0

我想這是一個WinForm項目和錯誤來自

comboBox2.SelectedItem.ToString() 

如果comboBox2綁定到數據源,儘量使用SelectedValu E或SelectedText

否則,你也可以用你assing @ACC_NAME變量ComboBox的Text屬性也

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 [email protected]_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

+0

它不工作.......... plz另一個幫助 – user1915023

+0

你能更具體地告訴哪個語句導致錯誤? – prthrokz

相關問題