作成日 2015.03.06
最終更新日 2015.03.06
概要
PostgreSQLデータベース・サーバのための、.NET データ・プロバイダNpgsqlのドキュメント(2014年7月25日・13改訂版)の和訳です。
旧版ドキュメント(外部サイト)
の和訳は存在しましたが、現行版のドキュメントのものは見つからなかったので和訳しました。
PostgreSQLとC#の両方を学ぶための資料集めの一環としての作成しています。
原文
npgsqlマニュアル(2014年7月25日・13改訂版)(外部サイト)
公式ページのドキュメントです。英語で書かれています。
シリアル値でテーブルので最後の挿入されたIDを取り出す
Retrieving last inserted id on a table with serial values
この例は、ユーザーに、Npgsqlフォーラムについての疑問を答えるとき、Josh Cooleyによって与えられました。 このコードは、あなたが、データベースで、次に示すテーブルと関数を持っていることを前提とします。:
create table test_seq (field_serial serial, test_text text);
CREATE OR REPLACE FUNCTION ins_seq("varchar")
RETURNS test_seq AS
'insert into test_seq (test_text) values ($1);
select * from test_seq where test_text = $1'
LANGUAGE 'sql' VOLATILE;
そして、これは、コードです。:
using System;
using System.Data;
using Npgsql;
using NpgsqlTypes;
public class c
{
public static void Main(String[] args)
{
NpgsqlConnection conn = new NpgsqlConnection("Server=127.0.0.1;User id=npgsql_tests;password=npgsql_tests;");
using (NpgsqlDataAdapter adapter = new NpgsqlDataAdapter("select * from test_seq", conn))
{
DataTable table = new DataTable();
adapter.Fill(table);
adapter.InsertCommand = new NpgsqlCommand("ins_seq", adapter.SelectCommand.Connection);
adapter.InsertCommand.Parameters.Add("foo", NpgsqlTypes.NpgsqlDbType.Varchar, 100, "test_text");
adapter.InsertCommand.CommandType = CommandType.StoredProcedure;
DataRow row = table.NewRow();
row["test_text"] = "asdfqwert";
table.Rows.Add(row);
adapter.Update(table);
foreach (DataRow rowItem in table.Rows)
Console.WriteLine("key {0}, value {1}", rowItem[0], rowItem[1]);
Console.ReadLine();
}
}
}