C#程序訪問PostgreSQL數據庫


最近開始做C#的DotNet的工作,因為對PostgreSQL數據庫比較有興趣,所以自己研究了一下如何訪問PostgreSQL的

數據庫的問題。

1、為了訪問PostgreSQL數據庫,需要從pgfoundry網站,下載Npgsql .Net Data Provider for Postgresql的組件。

訪問 URL:http://pgfoundry.org/frs/?group_id=1000140

 

注:因為使用的是DotNet3.5,所以下載了Npgsql2.0.6-bin-ms.net3.5sp1.zip。

 

2、解壓縮zip文件,把解壓縮的目錄中的Npgsql.dll、Mono.Security.dll復制到C#工程的obj目錄下,然后在VS2008中

,把 Npgsql.dll文件加入到References。

 

3、在需要使用Npgsql的C#文件頭,加入如下的using語句。

 

[c-sharp]  view plain copy
 
  1. using Npgsql;   

 

 

4、創建一個PostgreSQL的數據庫連接

 

[c-sharp]  view plain copy
 
  1. /* 用指定的connectionString,去實例化一個NpsqlConnection的對象*/  
  2. string connectionString = "Server=127.0.0.1;Port=5432;User Id=test;Password=test;Database=testdb;"  
  3. NpgsqlConnection conn = new NpgsqlConnection(string connectionString);  
  4. // 打開一個數據庫連接,在執行相關SQL之前調用  
  5. conn.Open();  
  6. //關閉一個數據庫連接,在執行完相關SQL之后調用  
  7. conn.Close();   

 

 

5、用NpgsqlCommand.ExecuteScalar()方法獲得唯一值的檢索結果

 

[c-sharp]  view plain copy
 
  1.  try  
  2. {  
  3.     string sql = "select count(*) from test";  
  4.     conn.Open();  
  5.     NpgSqlCommand objCommand = new NpgSqlCommand(sql, conn);  
  6.     int count = Convert.ToInt32(objCommand.ExecuteScalar());  
  7. }  
  8. finally  
  9. {  
  10.     conn.Close();  
  11. }   

 

 

6、用NpgsqlCommand.ExecuteReader() 方法獲得一個結果集的檢索結果(conn的Open和Close調用省略)

 

[c-sharp]  view plain copy
 
  1. string sql = "select * from test";  
  2. NpgsqlCommand objCommand = new NpgsqlCommand(sql,conn);  
  3. NpgsqlDataReader dr = command.ExecuteReader();  
  4. while(dr.Read())  
  5. {  
  6.     for (i = 0; i < dr.FieldCount; i++)  
  7.     {  
  8.         Console.Write("{0} /t", dr[i]); //獲得字段名  
  9.     }  
  10.     int testId = dr["id"]; // 獲得指定字段的值。(id是test表的一個字段)  
  11.     ……  
  12.     Console.WriteLine();  
  13. }  
  14. dr.Close();   

 

 

7、用NpgsqlCommand.ExecuteNonQuery()方法對指定表進行添加、更新和刪除一條記錄的操作

添加記錄:

 

[c-sharp]  view plain copy
 
  1. string sql = "insert test values (1,200)";  
  2. NpgsqlCommandobjCommand = new NpgsqlCommand(sql, conn);  
  3. objCommand.ExecuteNonQuery();   

 

 

更新記錄

 

[c-sharp]  view plain copy
 
  1. sql = "update test set price=300 where id=1";  
  2. NpgsqlCommandobjCommand = new NpgsqlCommand(sql, conn);  
  3. objCommand.ExecuteNonQuery();   

 

 

刪除記錄

 

[c-sharp]  view plain copy
 
  1. sql = "delete from test where id=1";  
  2. NpgsqlCommandobjCommand = new NpgsqlCommand(sql, conn);  
  3. objCommand.ExecuteNonQuery();   

 

 

8、用NpgsqlDataAdapter.Fill方法,把檢索的結果集放到DataSet object中,這樣可以使用DataSet object設置

DotNet的DataGridView控件的DataSource屬性,這樣在DataGridView中顯示從表中取出的所有記錄。

 

[c-sharp]  view plain copy
 
  1. string sql = "select id,price from test";  
  2. DataSet ds = new DataSet();  
  3. NpgsqlDataAdapter objAdapter = new NpgsqlDataAdapter(sql, conn);  
  4. objAdapter.Fill(ds, "a"); //“a”這個表是自定義的  
  5. dgvBaseResult.DataSource = ds.Tables["a"]; //dgvBaseResult是DataGridView的一個Object。  

 

注:SQL語句設置也可以用下面的語句 objAdapter.SelectCommand.CommandText = sql;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM