コード例 #1
0
ファイル: TicketClass.cs プロジェクト: Philip-Kwok/Lottery
        //method to add ticket records into a DB
        public void AddTicket(DataGridView dgv_ticket)
        {
            float  price      = (dgv_ticket.Rows.Count) * 2;
            string connString = null;
            //SQL strings
            string selectTicketIDString    = "SELECT MAX(TransactionID) FROM ticketTable";
            string MainTableInsertString   = "INSERT INTO MainTable (TransactionID,ClerkID,PurchaseDate,Price) Values (@TransactionID,@ClerkID,@PurchaseDate,@Price)";
            string TicketTableInsertString = "INSERT INTO TicketTable (TransactionID,TicketID,num1,num2,num3,num4,num5) Values (@TransactionID,@TicketID,@num1,@num2,@num3,@num4,@num5)";
            //creating connection
            SqlConnection sqlConn;

            connString = "Data Source=DESKTOP-30191JE\\SQLEXPRESS01;Initial Catalog=Test1;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
            sqlConn    = new SqlConnection(connString);

            try
            {
                int TransactionID = 0;
                //SQL commands
                SqlCommand selectTicketIDCMD    = new SqlCommand(selectTicketIDString, sqlConn);
                SqlCommand mainTableInsertCMD   = new SqlCommand(MainTableInsertString, sqlConn);
                SqlCommand ticketTableInsertCMD = new SqlCommand(TicketTableInsertString, sqlConn);
                sqlConn.Open();
                object obj = selectTicketIDCMD.ExecuteScalar();
                if (obj == DBNull.Value)
                {
                    TransactionID = 1000;
                }
                TransactionID = (int)selectTicketIDCMD.ExecuteScalar() + 1;
                sqlConn.Close();
                if (TransactionID < 999)
                {
                    TransactionID = 1000;
                }
                //adding parameters into SQL command for Ticket Table insert
                ticketTableInsertCMD.Parameters.AddWithValue("@TransactionID", TransactionID);
                ticketTableInsertCMD.Parameters.Add("@TicketID", SqlDbType.Int);
                ticketTableInsertCMD.Parameters.Add("@num1", SqlDbType.Int);
                ticketTableInsertCMD.Parameters.Add("@num2", SqlDbType.Int);
                ticketTableInsertCMD.Parameters.Add("@num3", SqlDbType.Int);
                ticketTableInsertCMD.Parameters.Add("@num4", SqlDbType.Int);
                ticketTableInsertCMD.Parameters.Add("@num5", SqlDbType.Int);


                //insertion and looping for multiple tickets
                for (int i = 0; i < dgv_ticket.Rows.Count - 1; i++)
                {
                    ticketTableInsertCMD.Parameters["@TicketID"].Value = i;
                    ticketTableInsertCMD.Parameters["@num1"].Value     = int.Parse(dgv_ticket.Rows[i].Cells[0].Value.ToString());
                    ticketTableInsertCMD.Parameters["@num2"].Value     = int.Parse(dgv_ticket.Rows[i].Cells[1].Value.ToString());
                    ticketTableInsertCMD.Parameters["@num3"].Value     = int.Parse(dgv_ticket.Rows[i].Cells[2].Value.ToString());
                    ticketTableInsertCMD.Parameters["@num4"].Value     = int.Parse(dgv_ticket.Rows[i].Cells[3].Value.ToString());
                    ticketTableInsertCMD.Parameters["@num5"].Value     = int.Parse(dgv_ticket.Rows[i].Cells[4].Value.ToString());
                    sqlConn.Open();
                    ticketTableInsertCMD.ExecuteNonQuery();
                    sqlConn.Close();
                }

                //inserting transaction information into Database
                mainTableInsertCMD.Parameters.AddWithValue("@TransactionID", TransactionID);
                mainTableInsertCMD.Parameters.AddWithValue("@ClerkID", LoginScreen.getClerkID());
                mainTableInsertCMD.Parameters.AddWithValue("@PurchaseDate", System.DateTime.Now);
                mainTableInsertCMD.Parameters.AddWithValue("@Price", price);

                sqlConn.Open();
                mainTableInsertCMD.ExecuteNonQuery();
                sqlConn.Close();
                MessageBox.Show("Ticket successfully made.");
            }
            catch (Exception ex)
            {
                MessageBox.Show("Unable to connect to server!\n" + ex.ToString());
            }
        }