SqlDataReader参数不起作用

我有一个Windows窗体,我要求用户在textbox1中输入pcname,然后尝试使用SqlDataReader从数据库读取以获取pc ipaddress然后将pc驱动器映射到我的本地PC。

但由于某些原因,当我在SQL参数中使用文本框时,它无法正常工作。 但是,当我用实际的pcname替换textbox1.text ,它工作正常。 希望有人可以帮我找出参数无法正常工作的原因。

这是我的代码:

 public void button1_Click(object sender, EventArgs e) { string results = ""; using (SqlConnection cs = new SqlConnection(@"***removed connection string***")) { cs.Open(); string query = "select stationipaddress from station where stationname = @StationName"; using (SqlCommand cmd = new SqlCommand(query, cs)) { // Add the parameter and set its value -- cmd.Parameters.AddWithValue("@StationName", textBox1.Text); 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 myvar = string.Format(@"use S: \\" + label3.Text + "\\c$\logs 0A36303 /user:admin", label3.Text); Process p = new Process(); p.StartInfo.FileName = "net.exe"; p.StartInfo.Arguments = (myvar); p.StartInfo.UseShellExecute = false; p.StartInfo.RedirectStandardOutput = true; p.StartInfo.RedirectStandardInput = true; p.StartInfo.CreateNoWindow = true; p.Start(); 

也许如果你将代码分成不同的行,一个用来设置你的参数,一个用来添加它,你可以更好地看到问题所在。 像这样的东西:

 SqlParameter param1 = new SqlParameter("@StationName", SqlDbType.NVarChar, textBox1.Text.length); param1.Value = textBox1.Text; cmd.Parameters.Add(param1); 

至少更容易看到调试器上发生了什么。