-5

可能重复:
SqlDataReader 参数不起作用

我正在尝试从文本框中获取 pc 名称到 Windows 窗体应用程序中的 sql 参数。当我输入如下参数时,它工作正常。

                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

你为什么不去掉撇号,即

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 回答
0

调用后AddWithValue设置DbType参数。那应该正确引用您的字符串。

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

编辑:对不起,我的意思是指定 SqlDbType

于 2012-11-30T17:49:38.513 回答