如何解决此异常? [英] How can I resolve this exception?

查看:106
本文介绍了如何解决此异常?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在运行时遇到了从未见过的异常​​.我不知道如何解决它.有人可以阐明可能导致这种情况的原因吗?

这是我的代码段:

I am running into an exception during runtime that I have never seen before. I''m lost as to how to resolve it. Can someone shed some light as to what might be causing this?

Here is my code segment:

SqlCeCommand code_comm_one = new SqlCeCommand("SELECT engine_code FROM vehicles WHERE make = @make AND model_name = @model AND model_year = @model_year AND engine_type = @engine_type", conn);
            SqlCeCommand code_comm_two = new SqlCeCommand("SELECT transmission_code FROM vehicles WHERE make = @make AND model_name = @model AND model_year = @model_year AND engine_type = @engine_type", conn);
            SqlCeCommand code_comm_three = new SqlCeCommand("SELECT abs_code FROM vehicles WHERE make = @make AND model_name = @model AND model_year = @model_year AND engine_type = @engine_type", conn);
            SqlCeCommand code_comm_four = new SqlCeCommand("SELECT comm_code FROM vehicles WHERE make = @make AND model_name = @model AND model_year = @model_year AND engine_type = @engine_type", conn);
            SqlCeCommand code_comm_five = new SqlCeCommand("SELECT accessory_code FROM vehicles WHERE make = @make AND model_name = @model AND model_year = @model_year AND engine_type = @engine_type", conn);
            
            // Executing Parameterized Queries
            code_comm_one.CommandType = CommandType.Text;
            code_comm_one.Parameters.AddWithValue("@make", makeComboBox.SelectedItem);
            code_comm_one.Parameters.AddWithValue("@model", modelComboBox.SelectedItem);
            code_comm_one.Parameters.AddWithValue("@model_year", yearComboBox.SelectedItem);
            code_comm_one.Parameters.AddWithValue("@engine_type", engineComboBox.SelectedItem);
            code_comm_one.ExecuteNonQuery();

            SqlCeDataReader code_dr_one = code_comm_one.ExecuteReader();
            SqlCeDataReader code_dr_two = code_comm_two.ExecuteReader();
            SqlCeDataReader code_dr_three = code_comm_three.ExecuteReader();
            SqlCeDataReader code_dr_four = code_comm_four.ExecuteReader();
            SqlCeDataReader code_dr_five = code_comm_five.ExecuteReader();

            if (code_dr_one.Read())
            {
                SqlCeCommand engine_path = new SqlCeCommand("SELECT accelerator_pedal_position FROM engine WHERE engine_code = @engine_code AND engine_type = '" + engineComboBox.Text + "'", conn);
                engine_path.CommandType = CommandType.Text;
                engine_path.Parameters.AddWithValue("@engine_code", code_dr_one.GetString(0));
                engine_path.ExecuteNonQuery();

                try
                {
                    SqlCeDataReader code_dr_one_prime = engine_path.ExecuteReader();
                    if(code_dr_one_prime.Read())
                    {
                        MessageBox.Show(code_dr_one_prime.GetString(0));
                    }
                }
                catch (SqlCeException ex)
                {
                    MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }         
                                
            code_comm_two.CommandType = CommandType.Text;
            code_comm_two.Parameters.AddWithValue("@make", makeComboBox.SelectedItem);
            code_comm_two.Parameters.AddWithValue("@model", modelComboBox.SelectedItem);
            code_comm_two.Parameters.AddWithValue("@model_year", yearComboBox.SelectedItem);
            code_comm_two.Parameters.AddWithValue("@engine_type", engineComboBox.SelectedItem);
            code_comm_two.ExecuteNonQuery();

            if (code_dr_two.Read())
            {
                SqlCeCommand transmission_path = new SqlCeCommand("SELECT turbine_speed_sensor FROM transmission WHERE trans_code = @trans_code AND trans_type = '" + transTypeComboBox.Text + "'", conn);
                transmission_path.CommandType = CommandType.Text;
                transmission_path.Parameters.AddWithValue("@trans_code", code_dr_two.GetString(0));
                transmission_path.ExecuteNonQuery();

                try
                {
                    SqlCeDataReader code_dr_two_prime = transmission_path.ExecuteReader();
                    if (code_dr_two_prime.Read())
                    {
                        MessageBox.Show(code_dr_two_prime.GetString(0));
                    }
                }
                catch (SqlCeException ex)
                {
                    MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }



Visual Studio拒绝if语句(if(code_dr_two.Read()).在此之前的所有内容都可以无缝运行.

感谢您的帮助.



Visual Studio is balking at the if statement (if(code_dr_two.Read()). Everything prior to that works seamlessly.

Thanks for your help.

推荐答案

您尚未设置在命令字符串中指定的任何参数:
You haven''t set any of the parameters you specified in the command string:
SqlCeCommand code_comm_two = new SqlCeCommand("SELECT transmission_code FROM vehicles WHERE make = @make AND model_name = @model AND model_year = @model_year AND engine_type = @engine_type", conn);

您已将它们设置为code_comm_one,但未将其设置为其他.您是否期望他们神奇地转移?

You have set them for code_comm_one, but not for the others. Did you expect them to magically transfer?


这篇关于如何解决此异常?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆