0

わかりましたので、文字列の問題があります。それが単純で、何年もの間それを見つめていて何も起こらなかったのか、それとも避けられないものなのか、私にはわかりません。

そのため、C# を使用して SQL サーバーにログインしようとしています。ログイン ボックスが表示されたら、ユーザー名とパスワードを接続クラスに渡すと、ログインが成功します。

    public void login(object sender, EventArgs e)
    {
        sqlconnect sql = new sqlconnect();

        sql.us = textBox1.Text;
        sql.pas = textBox2.Text;
            try
            {
                sql.GetSqlConnection();
                sql.myConnection.Open();
                label3.Text = "Connected";
                this.Hide();
                fronthyb.Show();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

以下は私の接続クラスです:

    public class sqlconnect
{
    public SqlConnection myConnection { get; set; }
    public String us;
    public String pas;
    Settings1 set = new Settings1();


    public SqlConnection GetSqlConnection()
    {
        if (myConnection == null)
            myConnection = new SqlConnection("user id="+(us)+"; password="+(pas)+";server="+(set.SelectServer)+";Trusted_Connection="+(set.SelectContype)+";database="+(set.SelectDataBase)+"; connection timeout="+(set.Condrop)+"");

        return myConnection;
    }


}

データベースに情報を追加しようとすると、問題が発生します。

     private void button1_Click(object sender, EventArgs e)
    {

            sql.GetSqlConnection();

            SqlCommand cm = new SqlCommand("insert into dbo.Employee(FirstName, LastName, DoB, UserName, Email, Role, JobTitle, MemberOf) values (@FirstName, @LastName, @DoB, @UserName, @Email, @Role, @JobTitle, @MemberOf)", sql.myConnection);
            cm.Parameters.AddWithValue("@FirstName", textBox2.Text);
            cm.Parameters.AddWithValue("@LastName", textBox3.Text);
            cm.Parameters.AddWithValue("@DoB", textBox5.Text);
            sql.myConnection.Open();
            cm.ExecuteNonQuery();
            sql.myConnection.Close();
            this.Close();

まだ開発中なので、まだキャッチはありませんが、プログラムがクラッシュし、基本的にユーザーが許可されていないと言います。接続クラスで文字列をテストしましたが、ログイン後に呼び出しても何も返されません。それで、ある時点で「null」に置き換えられたようですか?わからない。明らかな何かを見た人はいますか?長い質問で申し訳ありません。ありがとうございました。

4

2 に答える 2

1

sqlメソッドで使用する変数loginは、そのメソッドに対してローカルです。

つまり、そこで作成したオブジェクトはメソッドの外では到達できず、メソッドでsql使用する名前の変数はbutton1_Clickメソッドと同じではなく、loginそこで設定されたユーザー名とパスワードを持っていません。

于 2012-11-03T17:10:22.477 に答える
1

スコーピングの問題のようです。ログイン ハンドラーで、SqlConnect 型のローカル変数を定義します。「sql」という名前のグローバル変数が button1_Click ハンドラーで参照されているように見える場合、別のインスタンスであるため、ユーザー名/パスワード プロパティが設定されません。

于 2012-11-03T17:11:14.867 に答える