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(代表参考描述或电路板上的零件位置)

用户可以输入一个缺陷并点击一个按钮将缺陷添加到缺陷表中,用户可以多次执行此操作来添加其他缺陷。

当用户点击保存时,我如何将序列号与添加的所有缺陷联系起来?我是新的数据库编程,我只是不能弄清楚,或者如果我做得更困难,它是。请帮助。

SQL using postgresql and C3

我弄清楚了,我不知道这是否最有效,但这是我的代码。你觉得呢?我欢迎建设性的批评:)

 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());
        }
    }