C#SQL查询和撇号

时间:2012-11-30 17:38:57

标签: c# sql sqldatareader

  

可能重复:
  SqlDataReader parameter not working

我正在尝试从Windows文本框中将文件名中的pc名称转换为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 个答案:

答案 0 :(得分:1)

我建议您在从数据库中检索结果之后移出所有MessageBox操作。将结果添加到强类型列表中,然后相应地显示消息。

答案 1 :(得分:0)

尝试像'' - >这样的双撇号“约翰的” - > “约翰”的“

答案 2 :(得分:0)

致电AddWithValue后,请设置参数的DbType。这应该正确引用你的字符串。

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

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

答案 3 :(得分:0)

你为什么不剥掉撇号,即

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

如果StationName中的数据库字段值包含撇号,则必须将SQL语句更改为:

select stationipaddress from station where replace(stationname,CHAR(39),'') = @StationName