If statement inside of foreach loop.

ShannonCallahan
ShannonCallahan used Ask the Experts™
on
I have the following statement to save information to an Access db:

private void testButton_Click(object sender, EventArgs e)
        {

            try
            {
                //Create OleDB connection
                OleDbConnection connection = new OleDbConnection();
                connection.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=MyDb;
Persist Security Info=False;";

                //connect to DB
                connection.Open();

                //Setup 
                var ComboBoxList = Controls.OfType<ComboBox>();
                OleDbCommand command = new OleDbCommand();
                command.Connection = connection;

                //loop
                foreach (ComboBox taskComboBox in ComboBoxList)
                {
                    //Setup loop to assigned comboxes to corresponding stopwatch.
                    switch (taskComboBox.Name)
                    {
                        case "taskcombobox1":
                            stopwatch = stopwatch1;
                            break;
                        case "taskcombobox2":
                            stopwatch = stopwatch2;
                            break;
                        case "taskcombobox3":
                            stopwatch = stopwatch3;
                            break;
                        case "taskcombobox4":
                            stopwatch = stopwatch4;
                            break;
                        case "taskcombobox5":
                            stopwatch = stopwatch5;
                            break;
                        case "taskcombobox6":
                            stopwatch = stopwatch6;
                            break;
                        case "taskcombobox7":
                            stopwatch = stopwatch7;
                            break;
                        case "taskcombobox8":
                            stopwatch = stopwatch8;
                            break;
                        case "taskcombobox9":
                            stopwatch = stopwatch9;
                            break;
                        case "taskcombobox10":
                            stopwatch = stopwatch10;
                            break;
                        case "taskcombobox11":
                            stopwatch = stopwatch11;
                            break;
                        case "taskcombobox12":
                            stopwatch = stopwatch12;
                            break;
                        case "taskcombobox13":
                            stopwatch = stopwatch13;
                            break;
                        case "taskcombobox14":
                            stopwatch = stopwatch14;
                            break;
                        case "taskcombobox15":
                            stopwatch = stopwatch15;
                            break;
                        default:
                            break;

                    }
                    if (taskComboBox.Text != null)
                    {
                        //Insert data into table through loop
                        string query = "INSERT INTO MasterTable(Task, TimeWorked, RefDate, Analyst, HoursWorked) values('" + taskComboBox.Text + "', '" + stopwatch.Elapsed.ToString("hh\\:mm\\:ss") + "', '" + ReferenceDate + "', '" + AnalystName + "', '" + (stopwatch.Elapsed.TotalMinutes / 60d).ToString("N2") + "')";
                        command.CommandText = query;
                        command.ExecuteNonQuery();
                    }
                }

                //close connection to db
                connection.Close();
            }
            //handle errors
            catch (Exception ex)
            {
                MessageBox.Show("Error: " + ex);
            }
}

Open in new window


I tried using an if statement inside the foreach statement to notrun the SQL insert command for that combobox if it's value is null:

if (taskComboBox.Text != null)
                    {
                        //Insert data into table through loop
                        string query = "INSERT INTO MasterTable(Task, TimeWorked, RefDate, Analyst, HoursWorked) values('" + taskComboBox.Text + "', '" + stopwatch.Elapsed.ToString("hh\\:mm\\:ss") + "', '" + ReferenceDate + "', '" + AnalystName + "', '" + (stopwatch.Elapsed.TotalMinutes / 60d).ToString("N2") + "')";
                        command.CommandText = query;
                        command.ExecuteNonQuery();
                    }

Open in new window


This does not work. I am not sure it is because of the placement of the command. Any ideas?

Thank you,
Shannon
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Director of Technology Development, IPM
Commented:
The placement looks fine.
What if you tested against a blank entry?
                    if (taskComboBox.Text != "")
                    {
                        //Insert data into table through loop
                        string query = "INSERT INTO MasterTable(Task, TimeWorked, RefDate, Analyst, HoursWorked) values('" + taskComboBox.Text + "', '" + stopwatch.Elapsed.ToString("hh\\:mm\\:ss") + "', '" + ReferenceDate + "', '" + AnalystName + "', '" + (stopwatch.Elapsed.TotalMinutes / 60d).ToString("N2") + "')";
                        command.CommandText = query;
                        command.ExecuteNonQuery();
                    }

Open in new window

Author

Commented:
2/2! Thank you! I wonder why if (taskComboBox.Text != "") works but if (taskComboBox.Text != null) does not?

Author

Commented:
Thank you again! Saving me on this deadline!
Shannon
Introduction to Web Design

Develop a strong foundation and understanding of web design by learning HTML, CSS, and additional tools to help you develop your own website.

NorieAnalyst Assistant
Commented:
Shannon

Do you want to check if something has been selected in the combobox?
if (taskComboBox.SelectedIndex > -1)

Open in new window

Sam JacobsDirector of Technology Development, IPM

Commented:
Because null is the absence of ANY value, which is different then an empty string value.

Author

Commented:
Thank you both for the assistance. Both methods work, probably use the if (taskComboBox.SelectedIndex > -1) for this one. Thank you!!!

Commented:
*NO POINTS*

For explicit string comparisons two better options would be the string methods IsNullOrEmpty and IsNullOrWhitespace

-saige-

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial