2015-10-07 68 views
0

即时通讯困惑如何做到这一点,因为我是相当新的c#访问sql服务器。 我想用时间在startTime和EndTime之间的条件查询表格测验。然而,当我尝试添加时间参数,它说我有一个空引用异常。System.NullReferenceException添加日期时间SQL参数

DateTime date = DateTime.Now; 

    SqlConnection con = new SqlConnection("Data Source=.\\SQLSERVER;Initial Catalog=quizMaker;Integrated Security=True"); 
    SqlCommand com;  

subjects = "Subject-3"; 



     con.Open(); 
     SqlParameter time = new SqlParameter("@time", SqlDbType.DateTime); 
     time.Value = date; 
     com.Parameters.Add(time); //error pops up here 
     SqlParameter subjected = new SqlParameter("@subject", SqlDbType.VarChar, 20); 
     subjected.Value = subjects; 
     com = new SqlCommand("Select * from quiz where StartTime<[email protected] and EndTime>[email protected] and Subject_ID = @subject", con); 


     com.ExecuteNonQuery(); 
     con.Close(); 
+0

'SqlCommand的COM = new SqlCommand(“Select * from quiz where StartTime <= @ time and EndTime> = @ time and Subject_ID = @subject”,con);'而不是'SqlCommand com; ' – fubo

回答

0

com未分配,com为空。首先,您将参数添加到COM,然后你就COM =新的SqlCommand

com.Parameters.Add(time); //<-- com = null 
com = new SqlCommand("Select * from quiz where StartTime<[email protected] and EndTime>[email protected] and Subject_ID = @subject", con); //<-- com has a value (!= null) 

它只是必须做其他明智的:地方

com = new SqlCommand("Select * from quiz where StartTime<[email protected] and EndTime>[email protected] and Subject_ID = @subject", con); //<-- com has a value (!= null) 

之前

com.Parameters.Add(time); //<-- com = null 
+1

谢谢!我现在意识到了。由于试图解决以前的错误,并且必须改变其位置,我的代码混乱了。这真是一个愚蠢的错误。 –

+0

不客气!这就是程序员经常犯的那些小错误:-)很高兴它现在已经修复:-) –