-2

ユーザーにtextbox1にpcnameを入力するように要求しSqlDataReader、データベースからの読み取りに使用してpc ipaddressを取得し、pcドライブをローカルpcにマップしようとしているWindowsフォームがあります。

しかし、何らかの理由で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();
4

1 に答える 1

0

コードを別の行に分けて、1 行でパラメーターを設定し、もう 1 行でパラメーターを追加すると、どこに問題があるかをよりよく理解できるでしょう。このようなもの:

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

少なくとも、デバッガーで何が起こっているかを簡単に確認できます。

于 2012-11-30T16:22:38.173 に答える