如何在c#中执行sql select语句

时间:2012-11-26 14:26:50

标签: c# sql sql-server database 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();
}

此代码用于选择特定行,并且选择语句在sql管理器中正常工作 但在运行时会出现错误

  

“System.NullReferenceException:对象引用未设置为   对象的实例。在   Clinic.DoctorMoneyCall.button1_Click(Object sender,EventArgs e)in   C:\ Users \ Administrator \ documents \ visual studio   2010 \ Projects \ Clinic \ Clinic \ DoctorMoneyCall.cs:第45行“

我只是不明白出了什么问题

3 个答案:

答案 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;

答案 1 :(得分:0)

错误消息表示您使用的其中一个对象为null。 con对象是否已正确初始化?

答案 2 :(得分:0)

看起来你正在传递一个在该文档的第45行中为null的变量。确保所有值都为非空。