C#訪問postgresql資料庫

來源:互聯網
上載者:User

標籤:datagridview   http   使用   os   檔案   資料   io   for   

最近開始做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語句。view plaincopy to clipboardprint?
using Npgsql; 
using Npgsql;4、建立一個PostgreSQL的資料庫連接view plaincopy to clipboardprint?
/* 用指定的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(); 
/* 用指定的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()方法獲得唯一值的檢索結果view plaincopy to clipboardprint?
try 

string sql = "select count(*) from test"; 
conn.Open(); 
NpgSqlCommand objCommand = new NpgSqlCommand(sql, conn); 
int count = Convert.ToInt32(objCommand.ExecuteScalar()); 

finally 

conn.Close(); 

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調用省略)view plaincopy to clipboardprint?
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(); 
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()方法對指定表進行添加、更新和刪除一條記錄的操作添加記錄:view plaincopy to clipboardprint?
string sql = "insert test values (1,200)"; 
NpgsqlCommandobjCommand = new NpgsqlCommand(sql, conn); 
objCommand.ExecuteNonQuery(); 
string sql = "insert test values (1,200)";
NpgsqlCommandobjCommand = new NpgsqlCommand(sql, conn);
objCommand.ExecuteNonQuery();更新記錄view plaincopy to clipboardprint?
sql = "update test set price=300 where id=1"; 
NpgsqlCommandobjCommand = new NpgsqlCommand(sql, conn); 
objCommand.ExecuteNonQuery(); 
sql = "update test set price=300 where id=1";
NpgsqlCommandobjCommand = new NpgsqlCommand(sql, conn);
objCommand.ExecuteNonQuery();刪除記錄view plaincopy to clipboardprint?
sql = "delete from test 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中顯示從表中取出的所有記錄。view plaincopy to clipboardprint?
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。 
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;
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.