シーケンス取得 登録ボタンを押すとデータグリッドビューとpostgresテーブルにデータ保存
解決したいこと
シーケンス取得(シーケンス名'pgsqlseq1')
↓
テーブル保存
↓
データグリッドビュー保存で実装しているがシーケンス取得をC#上でどう取得するかアドバイスお願いいたします。
現状、テーブルにデータを追加するとシーケンスが発行されるがデータグリッド側の登録が上手くいかない。
発生している問題・エラー
・//DataTebleにデータを追加するの第七引数には現状1を置いており、このまま登録しても一意性制限で弾かれるのでシーケンスを取得して1を変更したい。
・NpgsqlCommand command = new NpgsqlCommand("insert into information values (nextval('pgsqlseq1'),:y, :b, :c, :d, :this.mail.Text,
↑
現状、これはシーケンスの取得ではなく発行なのでシーケンス取得と同時に直したい。
該当するソースコード
```postgres C#
private void addButton_Click(object sender, EventArgs e)
{
// フォームの入力チェック
if (!isFormCheck())
{
MessageBox.Show("氏名を入力してください!!");
return;
}
//denwaDataGrid.RowHeadersVisible = false;
//string a = this.myouji.Text + this.namae.Text;
string b = "";
if (radioButton1.Checked == true)
{
b = this.radioButton1.Text;
}
else if (radioButton2.Checked == true)
{
b = this.radioButton2.Text;
}
string c = "";
if (this.year.Text != "" && this.month.Text != "" && this.day.Text != "")
{
c = this.year.Text + "年" + this.month.Text + "月" + this.day.Text + "日";
}
string d = "";
if (this.phone1.Text != "" && this.phone2.Text != "" && this.phone3.Text != "")
{
d = this.phone1.Text + "-" + this.phone2.Text + "-" + this.phone3.Text;
}
string x = "";
if (this.postalCode1.Text == "" || this.postalCode2.Text == "")
{
x = this.areaBox.Text + this.city.Text + this.town.Text;
}
else if (this.postalCode1.Text != "" && this.postalCode2.Text != "")
{
x = this.postalCode1.Text + "-" + this.postalCode2.Text + this.areaBox.Text + this.city.Text + this.town.Text;
}
string y = this.myouji.Text + this.namae.Text;
//https://okwave.jp/qa/q5746298.html 参考文献C#からinsert実行
/*var connString = "Host=localhost;Port=5432;Username=postgres;Password=uw72qdet;Database=denwachou";
var cmd = new NpgsqlCommand("insert into information values (this.myouji.Text + this.namae.Text, b, c, d, this.mail.Text, x)", conn);
*/
NpgsqlConnection conn = new NpgsqlConnection
("Host=localhost;Port=5432;Username=postgres;Password=uw72qdet;Database=denwachou");
ここでシーケンスを取得?
NpgsqlCommand command = new NpgsqlCommand("insert into information values (nextval('pgsqlseq1'),:y, :b, :c, :d, :this.mail.Text, :x)", conn);
command.Parameters.Add(new NpgsqlParameter("y", y));
command.Parameters.Add(new NpgsqlParameter("b", b));
command.Parameters.Add(new NpgsqlParameter("c", c));
command.Parameters.Add(new NpgsqlParameter("d", d));
command.Parameters.Add(new NpgsqlParameter("this.mail.Text", this.mail.Text));
command.Parameters.Add(new NpgsqlParameter("x", x));
conn.Open();
command.ExecuteNonQuery();
//DataTebleにデータを追加する
denwaDataSet.denwaDataTable.AdddenwaDataTableRow(
y,
b,
c,
d,
this.mail.Text,
x,
1 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
);
}
0