You seem to combine both queries in a single command. DOn't do that. Instead run bith separately. You also seem to set the values for the parameters twice. At least when having a quick look I see no reason for that.
Also note that some of the parameters had a mismatch in naming.
So instead of
conn.Open();
string q4 = "insert into c_records (bookTitle, date, name, memberID, phone) values (@bookTitle, @date, @name, @memberID, @phone);";
string q5 = "delete customers from customers where name = @name and memberID = @memberID;";
MySqlCommand cmd = new MySqlCommand(q4 + q5, conn);
cmd.Parameters.AddWithValue("@date", date);
cmd.Parameters.AddWithValue("@memberID", memberID);
cmd.Parameters.AddWithValue("@phone", phone);
cmd.Parameters.AddWithValue("@book", bookTitle);
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters["@book"].Value = bookTitle;
cmd.Parameters["@date"].Value = date;
cmd.Parameters["@name"].Value = name;
cmd.Parameters["@memberID"].Value = memberID;
cmd.Parameters["@phone"].Value = phone;
MySqlDataAdapter adp = new MySqlDataAdapter(cmd);
DataSet ds = new DataSet();
adp.Fill(ds);
You should have something like
conn.Open();
string q4 = "insert into c_records (bookTitle, date, name, memberID, phone) values (@bookTitle, @date, @name, @memberID, @phone);";
MySqlCommand cmd = new MySqlCommand(q4, conn);
cmd.Parameters.AddWithValue("@bookTitle", bookTitle);
cmd.Parameters.AddWithValue("@date", date);
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters.AddWithValue("@memberID", memberID);
cmd.Parameters.AddWithValue("@phone", phone);
cmd.ExecuteNonQuery();
string q5 = "delete customers from customers where name = @name and memberID = @memberID;";
cmd = new MySqlCommand(q5, conn);
cmd.Parameters.AddWithValue("@name", name);
cmd.Parameters.AddWithValue("@memberID", memberID);
cmd.ExecuteNonQuery();
...