我正在尝试从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);
}
答案 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