2012-10-17 8 views
0

다음 코드를 적은 줄로 작성하는 방법이 있습니까? 간단한 쿼리를 실행하는 코드가 많은 것처럼 보입니다. VS2005를 사용할 때 LINQ가 없습니다. VB 또는 C# 중 하나의 대답을 사용할 수 있습니다.데이터베이스에 매개 변수화 된 쿼리를 보내는 더 쉬운 방법은 무엇입니까?

Using cmd As DbCommand = oDB.CreateCommand() 
    cmd.CommandText = "SELECT * FROM [Table1] WHERE [Date] BETWEEN @Date1 AND @Date2" 
    cmd.CommandTimeout = 30 
    cmd.CommandType = CommandType.Text 
    cmd.Connection = oDB 
    Dim param As DbParameter 
    param = cmd.CreateParameter() 
    param.Direction = ParameterDirection.Input 
    param.DbType = DbType.Date 
    param.ParameterName = "@Date1" 
    param.Value = Now().Date 
    cmd.Parameters.Add(param) 
    param = cmd.CreateParameter() 
    param.Direction = ParameterDirection.Input 
    param.DbType = DbType.Date 
    param.ParameterName = "@Date2" 
    param.Value = Now().Date.AddDays(intDaysAhead) 
    cmd.Parameters.Add(param) 
End Using 
Dim reader As DbDataReader = cmd.ExecuteReader() 

답변

2

이 가장 적은 줄은 당신이 얻을 수있는 아마 :

Using con = New SqlConnection("Connectionstring") 
    Using cmd = New SqlCommand("SELECT * FROM [Table1] WHERE [Date] BETWEEN @Date1 AND @Date2", con) 
     cmd.CommandTimeout = 30 
     cmd.Parameters.AddWithValue("@Date1", Date.Today) 
     cmd.Parameters.AddWithValue("@Date2", Date.Today.AddDays(intDaysAhead)) 
     con.Open() 
     Using reader = cmd.ExecuteReader() 

     End Using 
    End Using 
End Using 

나는`에 대한 가능한 방법으로`AddWithValue`을 받고 있지 않다

+0

(다른 데이터 공급자에 대한 SqlClient 비슷하지만 가정) DbCommand.Parameters'. '추가'만 – CJ7

+0

그러면'SqlClient'는'SqlParameterCollection'의 메소드이므로 가정하지 마십시오. 어떤 데이터 제공 업체를 사용하고 있습니까? 또한 .NET 2에서도'OledbParameterCollection'에서 사용할 수 있습니다 : http://msdn.microsoft.com/en-US/library/system.data.oledb.oledbparametercollection.addwithvalue(v=vs.80).aspx –

+0

코드는 잠재적으로'OleDBConnection' 또는'SQLConnection'을 처리하려고 시도하고 있으므로'DbCommand'를 사용합니다. – CJ7