我不確定我是否缺少明顯或明顯的東西,但似乎無法弄清楚如何高效地訪問關係數據庫中的表。我使用PostgreSQL數據庫服務器(和爲Npgsql的其接入)和C#與單聲道2.0。.NET/Mono數據庫訪問 - 輕鬆訪問列嗎?
假設我有由以下CREATE TABLE
和INSERT
語句創建的表格。
CREATE TABLE foo (
id UUID NOT NULL PRIMARY KEY,
bar VARCHAR(20) NOT NULL,
baz INT NOT NULL
)
INSERT INTO foo VALUES ('f42d3178-b900-11dd-ac23-001966607b2e', 'foo!', 1);
我的理解是迄今爲止的方式,我有(C#):
using(NpgsqlConnection dbc = new NpgsqlConnection(connectionString)) {
using(NpgsqlCommand cmd = new NpgsqlCommand("SELECT * FROM foo LIMIT 1", dbc)) {
NpgsqlDataReader rdr = cmd.ExecuteReader();
if(!rdr.HasRows())
throw new Exception("No rows");
rdr.Read();
Guid id = rdr.GetGuid(0);
string bar = rdr.GetString(1);
int baz = rdr.GetString(2);
}
}
但是,我真的很想做的是類似下面的僞代碼:
using(NpgsqlConnection dbc = new NpgsqlConnection(connectionString)) {
using(NpgsqlCommand cmd = new NpgsqlCommand("SELECT * FROM foo LIMIT 1", dbc)) {
NpgsqlDataReader rdr = cmd.ExecuteReader();
if(!rdr.HasRows())
throw new Exception("No rows");
rdr.Read();
Guid id = (Guid)rdr["id"];
string bar = (string)rdr["bar"];
int baz = (int)rdr["baz"];
}
}
在我看來(並希望我只是錯過某些地方顯而易見的東西),需要數據庫訪問的頂級方法,而當您要處理大量關係時真的很麻煩ns ...那麼,有沒有辦法更接近後者的僞代碼?
事實證明,第二個作品有點不同比我想象的。至少NpgsqlDataReader,對象已經輸入,並訪問,好像他們是一本字典。因此,對於上面的示例,rdr [「id」]已經是System.Guid。我想,非常酷,只是醫生的命令。 :) – 2008-11-23 03:20:26