簡體   English   中英

如何連接C#和PostgreSQL

[英]How to connect C# and PostgreSQL

我有2個表單,first1有用戶名,密碼框和登錄按鈕。 當我點擊登錄按鈕時,它將比較PostgresSQL中的用戶名密碼。 但是這條線路出錯了

NpgsqlDataReader dr = cmd.ExecuteReader(); [錯誤:42P01:關系“登錄”不存在]

這是我的代碼:

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();
        }

如果表名登錄正確,請檢查您的數據庫。 順便說一句,您需要過濾輸入值,因為您的代碼容易受到SQL注入攻擊。

您還應該嘗試更改表或數據庫名稱,它們都被稱為登錄,這可能會導致問題。

Server=127.0.0.1;Port=5432;User Id=postgres;Password=admin123;**Database=Login**

登錄是數據庫名稱

"SELECT * FROM **login** WHERE name='" + tb1.Text + "' and password = '" + tb2.Text + "'",conn

登錄是表名

如果這是正確的,那么檢查表登錄是否存在於數據庫LOGIN中

ERROR: 42P01: relation "login" does not exist

關系意味着

此外,您不能在Postgres中使用以大寫字母開頭的表名。 如果您的表名以大寫字母開頭,則需要將其括在雙引號內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM