我有一个 Windows 窗体,要求用户在 textbox1 中输入 pcname,然后尝试使用SqlDataReader
从数据库中读取以获取电脑IP地址,然后将电脑驱动器映射到我的本地电脑。
但由于某种原因,当我在 SQL 参数中使用文本框时,它不起作用。但是当我更换textbox1.text
使用实际的 pcname 就可以正常工作。希望有人可以帮助我找出该参数无法正常工作的原因。
这是我的代码:
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);
至少更容易看到调试器上发生了什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)