SQL using postgresql and C3
本文关键字:C3 and postgresql using SQL | 更新日期: 2023-09-27 18:15:47
我有一个关于postgresql中的多个表和在c#中使用sql语句的问题。我有两张表
CREATE TABLE "Board"
(
board_id bigserial NOT NULL,
board_serial_number integer NOT NULL,
CONSTRAINT "Board_pkey" PRIMARY KEY (board_id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE "Board"
OWNER TO postgres;
CREATE TABLE "Defect"
(
defect_id bigserial NOT NULL,
defect_type text,
ref_des text,
board_id integer,
CONSTRAINT "Defect_pkey" PRIMARY KEY (defect_id),
CONSTRAINT "Defect_board_id_fkey" FOREIGN KEY (board_id)
REFERENCES "Board" (board_id) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
)
WITH (
OIDS=FALSE
);
我有一个数据输入表单,总是用户输入一个序列号,并输入缺陷类型和ref_Des(代表参考描述或电路板上的零件位置)
用户可以输入一个缺陷并点击一个按钮将缺陷添加到缺陷表中,用户可以多次执行此操作来添加其他缺陷。
当用户点击保存时,我如何将序列号与添加的所有缺陷联系起来?我是新的数据库编程,我只是不能弄清楚,或者如果我做得更困难,它是。请帮助。
我弄清楚了,我不知道这是否最有效,但这是我的代码。你觉得呢?我欢迎建设性的批评:)
private void addDefect()
{
try
{
NpgsqlConnection conn = Connection.getConnection();
conn.Open();
DefectType = cboDefectType.Text;
ResDes = txtRefDes.Text;
NpgsqlCommand cmd2 = new NpgsqlCommand("select * from '"Board'" where '"board_serial_number'" = :SerialNumber;", conn);
cmd2.Parameters.Add(new NpgsqlParameter("SerialNumber", SerialNumber));
NpgsqlDataReader dr = cmd2.ExecuteReader();
if (dr.Read())
{
DefectBoardID = dr.GetInt64(0);
cmd2.Dispose();
dr.Dispose();
conn.Close();
}
conn.Open();
NpgsqlCommand cmd = new NpgsqlCommand("insert into '"Defect'"('"defect_type'",'"ref_des'",'"board_id'")" +
"Values(:DefectType,:RefDes,:BoardID);", conn);
cmd.Parameters.Add(new NpgsqlParameter("DefectType", DefectType));
cmd.Parameters.Add(new NpgsqlParameter("RefDes", ResDes));
cmd.Parameters.Add(new NpgsqlParameter("BoardID", DefectBoardID));
int recordInserted = cmd.ExecuteNonQuery();
if (recordInserted == 1)
{
lblError.Text = "Defects Added to Board" + SerialNumber + "!";
}
else
{
lblError.Text = "Defects were not added to Board" + SerialNumber + "!";
}
conn.Close();
cmd.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}