1. ホーム
  2. c#

[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない

2022-02-14 12:15:19

質問

データにアクセスしようとしています empname をemployeeTableから取得したいのですが、私が書いたコードでは以下のエラーが発生します。

equal to 演算子で text と varchar のデータ型に互換性がありません。

解決策をご提案ください。

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

解決方法は?

テキストとvarcharを比較することはできませんが、今後この問題に直面する人への回答として、単にクエリのためにテキストカラムをvarcharに変換してください。

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

常に パラメータ

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