-5

重複の可能性:
SqlDataReader パラメータが機能しない

Windows フォーム アプリケーションのテキスト ボックスから sql パラメータに PC 名を取得しようとしています。以下のようにパラメータを入力するとうまくいきます。

                string query = @"select stationipaddress from station where stationname = @Name";
                using (SqlCommand cmd = new SqlCommand(query, cs))
            {


               SqlParameter param = new SqlParameter();
                param.ParameterName = "@Name";
                param.Value = "demo";
                cmd.Parameters.Add(param);

                using (SqlDataReader dr = cmd.ExecuteReader())
                {

                    while (dr.Read())
                    {
                        label3.Text = dr.GetSqlValue(0).ToString();
                        results = dr.GetValue(0).ToString();
                        MessageBox.Show(dr.GetValue(0).ToString());
                        MessageBox.Show(results);
                    }

しかし、テキストボックスからデータを取得しようとしても何もしません。

 string query = @"select stationipaddress from station where stationname = @Name";
            using (SqlCommand cmd = new SqlCommand(query, cs))
            {


                  SqlParameter param = new SqlParameter();
                param.ParameterName = "@Name";
                param.Value = textBox1.Text;
                cmd.Parameters.Add(param);

                using (SqlDataReader dr = cmd.ExecuteReader())
                {

                    while (dr.Read())
                    {
                        label3.Text = dr.GetSqlValue(0).ToString();
                        results = dr.GetValue(0).ToString();
                        MessageBox.Show(dr.GetValue(0).ToString());
                        MessageBox.Show(results);
                    }
4

4 に答える 4

1

データベースから結果を取得するまで、すべての MessageBox 操作を移動することをお勧めします。結果を厳密に型指定されたリストに追加し、それに応じてメッセージを表示します。

于 2012-11-30T17:42:11.780 に答える
0

After you call AddWithValue set the DbType of your parameter. That should quote your string properly.

cmd.Parameters["@StationName"].SqlDbType = SqlDbType.NVarChar;

EDIT: Sorry, I meant to specify SqlDbType

于 2012-11-30T17:49:38.513 に答える
0

アポストロフィを取り除かないのはなぜですか ie

cmd.Parameters.AddWithValue("@StationName", textBox1.Text.Replace("'","")

StationName のデータベース フィールド値にアポストロフィが含まれている場合は、SQL ステートメントを次のように変更する必要があります。

select stationipaddress from station where replace(stationname,CHAR(39),'') = @StationName
于 2012-11-30T17:55:35.283 に答える
0

'' -> "John's" --> "John''s" のように二重アポストロフィを試してください

于 2012-11-30T17:44:37.883 に答える