0

私はこのコーディングを試していますが、このコーディングのエラーは何ですか?

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は、equalto演算子で互換性がありません。」

4

3 に答える 3

2

最初にクエリで変数を割り当て@ACC_NAME、次にパラメータとして再度追加します。SqlCommand.ParametersMSDNからチェックアウトしてください。

このようにしてみてください。

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は、equalto演算子で互換性がありません。

あなたのデータベースでは、あなたのACC_NAME列タイプはtextです。そのため、文字列で評価しようとするとエラーが発生します。2つのオプションがあります。

  • ACC_NAMEデータベースで列タイプをに変更nvarcharします。Textデータ型は非推奨です。
  • LIKEの代わりに演算子を使用=してください。演算子とWHERE比較することはできません。試す;text=

ここで、ACC_NAME LIKE @ACC_NAME;

于 2013-01-08T08:28:36.993 に答える
0

これはwinformプロジェクトであり、エラーは

comboBox2.SelectedItem.ToString()

comboBox2がデータソースにバインドされている場合は、SelectedValueまたはSelectedTextを使用してみてください

それ以外の場合は、コンボボックスのTextプロパティも使用できます

于 2013-01-08T08:28:17.910 に答える
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

于 2013-01-08T08:29:02.067 に答える