2015-01-11 39 views
3

我試圖從EmployeeTable中訪問數據empname,但我寫的代碼是給我下面的錯誤:數據類型text和varchar是在等於運算符不兼容的C#

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

請提出一個解決方案

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string Connection = "Data Source=(local);Initial catalog=Test;Integrated Security=true"; 
    string Query = "SELECT * FROM EmployeeTable WHERE empname='" + comboBox1.Text + "' ;"; 

    SqlConnection conn = new SqlConnection(Connection); 
    SqlCommand cmd = new SqlCommand(Query, conn); 

    conn.Open(); 
    SqlDataReader reader = cmd.ExecuteReader(); 

    while (reader.Read())  
    { 
     textBoxEmpName.Text = reader["EmpName"].ToString(); 
    } 
} 
+2

在這行你得到這個錯誤?並使用參數化查詢。這種字符串連接對於SQL注入攻擊是開放的。 –

+0

'EmployeeTable.empname'的類型是什麼? –

+0

哪條線給你錯誤?另外,學習使用參數化查詢。 –

回答

10

你不能比較的文本爲varchar,但作爲一個答案,在未來任何人這個問題簡單的文本列轉換爲varchar的查詢。

SELECT * FROM EmployeeTable WHERE CONVERT(VARCHAR, empname) = '" + comboBox1.Text + "' ;"; 

始終使用parameters

SELECT * FROM EmployeeTable WHERE CONVERT(VARCHAR, empname) = @comboBox"; 
0

嘗試使用VARCHAR(MAX)如果目標字符串的大小是沒有大到足以表示XML實例。

CONVERT(VARCHAR(MAX), empname) 
相關問題