//get the new results id for this instance of session form //a method for getting the new results id for the current form public static int getResultsID(DBConnect DBCon) { string resultsIDQuery = "SELECT (1+max(resultsID)) from result_;"; //set the query queryRunner queryR = new queryRunner(resultsIDQuery); //initialize a new query runner object for running queries string resultID = queryR.runQuery(DBCon.getConnection()); //sets the new result id equal to a new strin object try { return Int32.Parse(resultID); //returns the int32 value parsed from the string object. } catch (FormatException) //if something goes wrong... { return 0; //return 0... if this happens then a sql exception may be thrown that is unaccounted for *TODO* } }
//a method for obtaining all of the new tireID's for the given session. public static List<string> getNewTireIDs(DBConnect DBCon) { string tireQuery = "SELECT (1+max(LF_LFTireID)), (1+max(RF_RFTireID)), (1+max(LR_LRTireID)), (1+max(RR_RRTireID)) FROM result_;"; //define the tire query string queryRunner queryR = new queryRunner(tireQuery); //make the query runner object for the tire query queryR.runQuery(DBCon.getConnection()); //run the query return queryR.getLastQueryResultsList(); //return the generic list object with the new tireIds }
//an on click event for the page protected void submitForm_Click(object sender, EventArgs e) { //make a new dbconnect object to pass to the makeSqlInsertStatements method DBConnect DB = new DBConnect(); makeSQLInsertStatements(DB); //cal the makeSqlinsertstatements method with the dbConnect object as a parameter. //need to make the page reset all fields after doing this. Response.Redirect(Request.RawUrl); //resets the page when the submission is complete. }
string todaysDate; //stores the date of today. #endregion Fields #region Constructors public sqlTesting(DBConnect DBCon) { testingDB = DBCon; //initialize the testingDB instance varriable to the dbcon object passed in with the constructor sqlQuery = ""; //set the sql query to an empty string. todaysDate = DateTime.Now.ToString("yyyy-MM-dd"); //set todaysDate to todays date with the appropriate format testingStrings = new List<string>(); //make a new generic list object that stores string typed varriables queryR = new queryRunner(""); //initialize query runner with an empty string. connection = testingDB.getConnection(); //set the inherited connection attribute to the connection provided to us in the DB object }
protected void makeSQLInsertStatements(DBConnect con) { //an array of the laptimetextbox objects. Needed for looping through the names and making sql insert statements. var lapTimeBoxes = new[] { lapTimeTextBox1, lapTimeTextBox2, lapTimeTextBox3, lapTimeTextBox4, lapTimeTextBox5, lapTimeTextBox6, lapTimeTextBox7, lapTimeTextBox8, lapTimeTextBox9, lapTimeTextBox10, lapTimeTextBox11, lapTimeTextBox12, lapTimeTextBox13, lapTimeTextBox14, lapTimeTextBox15, lapTimeTextBox16, lapTimeTextBox17, lapTimeTextBox18, lapTimeTextBox19, lapTimeTextBox20 }; String sessionInsertCmdString = ""; //initializing a string for use by insert statements DateTime thisDay = DateTime.Today; //date for documentation with inserts MySqlCommand insertCommand = new MySqlCommand(sessionInsertCmdString, con.getConnection()); //uses the connection passed to this method to make an insertcommand object that will be used to run insert statements. sqlTesting tester = new sqlTesting(con); //make a new sqlTesting object for using the class SessionFormClass session = new SessionFormClass(SQLUtility.getResultsID(con), SessionIDTextBox.Text); insertCommand.Parameters.AddWithValue("@eventNotes", notesTextBox.Text); //adds a parameter that allows for safeguarding agains the insertion of special characters into the event notes box. Prevents sql injection attacks //from happening, however it seems cross site scripting might still be a security concern. eventDD.SelectedIndex = 0; //set the selected index for eventDropDown box to 0. Needs to be changed in the future when more than one event object exists. if (tester.eventTest(eventDD.Text)) //if the eventTest returns true we need to make an entry for event so that the other queries will work. { SQLUtility.doAnInsert("insert into event values ('Asphalt', '" + CityTextBox.Text + "', '" + StateTextBox.Text + "', " + NumLapsTextBox.Text + ", STR_TO_DATE('" + thisDay.ToString("d") + "', '%m/%d/%Y'), '" + eventDD.Text + "');", insertCommand); } //Sets the selected index for sessionIdDD to 0. This should always happen since the field is not editable. SessionIDTextBox.SelectedIndex = 0; //this check might be valuable in the future but right now the below commented check is unnecessary. //if (SQLUtility.sessionTest(SessionIDTextBox.Text, con)) //{ SQLUtility.doAnInsert("insert into session_ values ('" + session.getSessioNID() + "', '" + DateTime.Now.TimeOfDay + "', STR_TO_DATE('" + thisDay.ToString("d") + "', '%m/%d/%Y'), '" + eventDD.Text + "', @eventNotes);", insertCommand); // } //No setup table insert commands are needed since there are only 2 setups SU1 is the default setup //No Kart insert statements are needed either, it is inferred if the drivers are using EV or Gas and the appropriate setup is applied //put the new tireIDs into an array string[] tireIDs = (SQLUtility.getNewTireIDs(con)).ToArray(); //tire insert statements; may want tire quality & prep level text boxes at some point in the future. //Tire values are inserted when they have been input into text boxes. If no parseable values have been entered, then the tire details input fails, but puts a dummy entry in so that a results entry //can be logged for the submitted form regardless. if (SQLUtility.checkStrings(LFctTextBox.Text, LFhtTextBox.Text, LFhpTextBox.Text, LFcpTextBox.Text)) { SQLUtility.doAnInsert("insert into lf values ('" + tireIDs[0] + "', '" + compoundTextBox.Text + "', '" + "" + "'," + double.Parse(LFctTextBox.Text) + ", " + double.Parse(LFhtTextBox.Text) + ", " + double.Parse(LFhpTextBox.Text) + ", '0', " + double.Parse(LFcpTextBox.Text) + ");", insertCommand); } else { SQLUtility.doAnInsert("insert into lf (LFTireID) values ('" + tireIDs[0] + "');", insertCommand); } if (SQLUtility.checkStrings(RFctTextBox.Text, RFhtTextBox.Text, RFhpTextBox.Text, RFcpTextBox.Text)) { SQLUtility.doAnInsert("insert into rf values ('" + tireIDs[1] + "', '" + compoundTextBox.Text + "', '" + "" + "'," + double.Parse(RFctTextBox.Text) + ", " + double.Parse(RFhtTextBox.Text) + ", " + double.Parse(RFhpTextBox.Text) + ", '0', " + double.Parse(RFcpTextBox.Text) + ");", insertCommand); } else { SQLUtility.doAnInsert("insert into rf (rfTireID) values ('" + tireIDs[1] + "');", insertCommand); } if (SQLUtility.checkStrings(LRctTextBox.Text, LRhtTextBox.Text, LRhpTextBox.Text, LRcpTextBox.Text)) { SQLUtility.doAnInsert("insert into lr values ('" + tireIDs[2] + "', '" + compoundTextBox.Text + "', '" + "" + "'," + double.Parse(LRctTextBox.Text) + ", " + double.Parse(LRhtTextBox.Text) + ", " + double.Parse(LRhpTextBox.Text) + ", '0', " + double.Parse(LRcpTextBox.Text) + ");", insertCommand); } else { SQLUtility.doAnInsert("insert into lr (LRTireID) values ('" + tireIDs[2] + "');", insertCommand); } if (SQLUtility.checkStrings(RRctTextBox.Text, RRhtTextBox.Text, RRhpTextBox.Text, RRcpTextBox.Text)) { SQLUtility.doAnInsert("insert into rr values ('" + tireIDs[3] + "', '" + compoundTextBox.Text + "', '" + "" + "'," + double.Parse(RFctTextBox.Text) + ", " + double.Parse(RFhtTextBox.Text) + ", " + double.Parse(RFhpTextBox.Text) + ", '0', " + double.Parse(RFcpTextBox.Text) + ");", insertCommand); } else { SQLUtility.doAnInsert("insert into rr (RRTireID) values ('" + tireIDs[3] + "');", insertCommand); } //result insert statement. Has to be second to last since needed primary keys are being generated before this. int resultsID = SQLUtility.getResultsID(con); //store the new resultsID so that the lap inserts can run with the proper id being linked to them. SQLUtility.doAnInsert("insert into result_ values (" + session.getResultsID() + ", '" + timeSystemDropDownList.Text + "', '" + TrafficDropDownBox.SelectedIndex + "', " + SessionIDTextBox.Text + ", '" + KartFrameDD.Text + "', '" + driverPhoneDD.Text + "', '" + tireIDs[0] + "', '" + tireIDs[1] + "', '" + tireIDs[2] + "', '" + tireIDs[3] + "', '" + 0 + "', @eventNotes);", insertCommand); for (int x = 0; x < 20; x++) { if ((lapTimeBoxes[x].Text) != "") { SQLUtility.doAnInsert("insert into LAP values (" + session.getResultsID() + " ," + x + " ," + lapTimeBoxes[x].Text + ");", insertCommand); //run an insert statement for each lap textbox that is filled out. } } }