5

C#とPostgresSQLを接続する方法を学ぶだけです。tb1(テキストボックス)とtb2からデータベースにデータを挿入したい。しかし、コーディング方法がわかりません。以前のコードはデータベースからのSELECTです。これは私のコードです

private void button1_Click(object sender, EventArgs e)
    {
        bool blnfound = false;
        NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;Port=5432;User Id=postgres;Password=admin123;Database=Login");
        conn.Open();
        NpgsqlCommand cmd = new NpgsqlCommand("SELECT * FROM login WHERE name='" + tb1.Text + "' and password = '" + tb2.Text + "'",conn);
        NpgsqlDataReader dr = cmd.ExecuteReader();

        if (dr.Read())
        {
            blnfound = true;
            Form2 f5 = new Form2();
            f5.Show();
            this.Hide();
        }

        if (blnfound == false)
        {
            MessageBox.Show("Name or password is incorrect", "Message Box", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
            dr.Close();
            conn.Close();
        }
    }

だから私にコードを手伝ってください。

4

1 に答える 1

12

まず、ステートメントではなくを実行しているため、ExecuteNonQueryメソッドではなくメソッドを使用する必要があります。したがって、次のようなものです:ExecuteReaderINSERTSELECT

NpgsqlCommand cmd = new NpgsqlCommand("insert into table1 values(1, 1)", conn);
cmd.ExecuteNonQuery();

このExecuteNonQueryメソッドは、影響を受けた行数が重要な場合はそれも返します。

次に、安全でない SQL 文字列を作成するのではなく、SQL パラメーターを使用する必要があります。

使用する:

cmd.Parameters.Add(new NpgsqlParameter("name", tb1.Text));
cmd.Parameters.Add(new NpgsqlParameter("pw", tb2.Text));

クエリにパラメーターを追加するには。INSERT ステートメントで:nameor:pwを使用して参照できるようになりました。次に例を示します。

NpgsqlCommand cmd = new NpgsqlCommand("insert into login (Name, Password) values(:name, :pw)", conn);
cmd.ExecuteNonQuery();

最後に、生の SQL ステートメントを実行するのではなく、 ORMを使用することに関心があるかもしれません。NHibernate上に構築された.NET Entity FrameworkまたはCastle Active Recordにチェックインします。これらのライブラリを使用すると、関連する実際の SQL ステートメントを記述することなく、データベース内のデータをクエリ、更新、作成、および削除できます。これは始めるのに最適な方法であり、コードをかなり簡単にします!

于 2012-06-28T03:04:39.520 に答える