2012-11-26 25 views
1

我有一个小问题就在这里: 我有一个组合框,在数据库中获取从列的值,我用它来背输入数据到另一个。安迪在数据库 像如何在C#中执行SQL SELECT语句

comboBox2.DataSource = ds1.Tables[0]; 
comboBox2.DisplayMember = "DoctorName"; 
comboBox2.ValueMember = "DoctorCode"; 
comboBox2.BindingContext = this.BindingContext; 

这填补组合框与医生的名字和值将成为医生 的代码,然后

SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=c:\users\administrator\documents\visual studio 2010\Projects\Clinic\Clinic\Clinc.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"); 
     con.Open(); 
     SqlCommand cmd1 = new SqlCommand("SELECT Doctors.DoctorCode, Doctors.DoctorName, SessionReservations.SessionCode, SessionReservations.PatientCode, SessionReservations.ExaminationCode, SessionReservations.DoctorCode AS Expr1, SessionReservations.SessionMonth, SessionReservations.SessionYear FROM Doctors INNER JOIN SessionReservations ON Doctors.DoctorCode = SessionReservations.DoctorCode WHERE (Doctors.DoctorCode = @DoctorCode) AND (SessionReservations.SessionMonth = @month) AND (SessionReservations.SessionYear = @year)", con); 
     SqlDataAdapter da2 = new SqlDataAdapter(cmd1); 
     DataSet ds2 = new DataSet(); 

     try 
     { 

      da2.InsertCommand.Parameters.Add("@DoctorCode", SqlDbType.Int).Value = Convert.ToInt32(comboBox2.SelectedValue); 
      da2.InsertCommand.Parameters.Add("@month", SqlDbType.Int).Value = comboBox1.SelectedValue; 
      da2.InsertCommand.Parameters.Add("@year", SqlDbType.Int).Value = textBox2.Text; 

      da2.Fill(ds2); 
      cmd1.ExecuteReader(); 
      con.Close(); 
} 

该代码可用于选择特定的行和选择statment工作就在SQL管理器 但在运行它给错误

“System.NullReferenceException:对象引用未设置为对象的 实例。在 Clinic.DoctorMoneyCall.button1_Click(对象发件人,EventArgs e)如 C:\用户\管理员\文件\视觉工作室 2010 \项目\诊所\诊所\ DoctorMoneyCall.cs:行45"

我只是不明白这是怎么回事错

+5

哪个是45行? –

+0

@fenonoga - 这只是一个空引用问题。这不是运行SQL查询所特有的。 –

+0

尝试调试,并查看您的复选框和文本框是否有任何值作为参数 –

回答

2

看起来你正在尝试运行一个select命令,但是你正在将参数添加到insert命令。

 da2.SelectCommand.Parameters.Add("@DoctorCode", SqlDbType.Int).Value = Convert.ToInt32(comboBox2.SelectedValue); 
     da2.SelectCommand.Parameters.Add("@month", SqlDbType.Int).Value = comboBox1.SelectedValue; 
     da2.SelectCommand.Parameters.Add("@year", SqlDbType.Int).Value = textBox2.Text; 
+0

是的,我想每次都选择不同的东西,所以我必须在查询语句 –

+0

中创建变量,但是您将它们添加到插入命令,而不是选择命令。 SQL命令有4种状态:选择,更新,插入,删除。它来自您可以运行的SQL查询。我将你的“insertcommand”改为“selectCommand”的 – gashach

+0

噢,我的上帝啊,非常感谢你,我觉得自己很愚蠢,试图在几天之内知道错误在哪里,非常愚蠢的事情,我必须再次关注 谢谢 –

0

错误消息意味着你使用的对象之一是零。是CON对象正确初始化?

+0

是的连接工作正常,我已经在标签中显示了我的文本框和组合框的值,以确保它们正常工作,并且它们的确如此 –

0

好像你传递一个变量是空的该文件的第45行,确保所有的值都是非空的

+0

这并没有太大的意义。他传递的内容不能为null,因为它的表单上存在的控件的内容和这两个值都有默认值。 –