最近開始做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語句。
- using Npgsql;
4、創建一個PostgreSQL的數據庫連接
- /* 用指定的connectionString,去實例化一個NpsqlConnection的對象*/
- string connectionString = "Server=127.0.0.1;Port=5432;User Id=test;Password=test;Database=testdb;"
- NpgsqlConnection conn = new NpgsqlConnection(string connectionString);
- // 打開一個數據庫連接,在執行相關SQL之前調用
- conn.Open();
- //關閉一個數據庫連接,在執行完相關SQL之后調用
- conn.Close();
5、用NpgsqlCommand.ExecuteScalar()方法獲得唯一值的檢索結果
- try
- {
- string sql = "select count(*) from test";
- conn.Open();
- NpgSqlCommand objCommand = new NpgSqlCommand(sql, conn);
- int count = Convert.ToInt32(objCommand.ExecuteScalar());
- }
- finally
- {
- conn.Close();
- }
6、用NpgsqlCommand.ExecuteReader() 方法獲得一個結果集的檢索結果(conn的Open和Close調用省略)
- string sql = "select * from test";
- NpgsqlCommand objCommand = new NpgsqlCommand(sql,conn);
- NpgsqlDataReader dr = command.ExecuteReader();
- while(dr.Read())
- {
- for (i = 0; i < dr.FieldCount; i++)
- {
- Console.Write("{0} /t", dr[i]); //獲得字段名
- }
- int testId = dr["id"]; // 獲得指定字段的值。(id是test表的一個字段)
- ……
- Console.WriteLine();
- }
- dr.Close();
7、用NpgsqlCommand.ExecuteNonQuery()方法對指定表進行添加、更新和刪除一條記錄的操作
添加記錄:
- string sql = "insert test values (1,200)";
- NpgsqlCommandobjCommand = new NpgsqlCommand(sql, conn);
- objCommand.ExecuteNonQuery();
更新記錄
- sql = "update test set price=300 where id=1";
- NpgsqlCommandobjCommand = new NpgsqlCommand(sql, conn);
- objCommand.ExecuteNonQuery();
刪除記錄
- sql = "delete from test where id=1";
- NpgsqlCommandobjCommand = new NpgsqlCommand(sql, conn);
- objCommand.ExecuteNonQuery();
8、用NpgsqlDataAdapter.Fill方法,把檢索的結果集放到DataSet object中,這樣可以使用DataSet object設置
DotNet的DataGridView控件的DataSource屬性,這樣在DataGridView中顯示從表中取出的所有記錄。
- string sql = "select id,price from test";
- DataSet ds = new DataSet();
- NpgsqlDataAdapter objAdapter = new NpgsqlDataAdapter(sql, conn);
- objAdapter.Fill(ds, "a"); //“a”這個表是自定義的
- dgvBaseResult.DataSource = ds.Tables["a"]; //dgvBaseResult是DataGridView的一個Object。
注:SQL語句設置也可以用下面的語句 objAdapter.SelectCommand.CommandText = sql;