2011-09-08 33 views
5

Tôi mới làm quen với các câu lệnh chuẩn bị trong vb.net và Microsoft SQL Server 2008. Tôi không thể tìm thấy bất kỳ nguồn nào tốt để kết nối với cơ sở dữ liệu qua chuỗi kết nối và thực hiện các câu lệnh đã chuẩn bị. Ai đó có thể chỉ cho tôi một ví dụ hoặc chỉ cho tôi một tài nguyên có thể hữu ích không?Báo cáo đã chuẩn bị trong VB.NET

Trả lời

4

Báo cáo chuẩn bị không là gì ngoài Parametrized SqlCommands được đính kèm trong Giao dịch.

Ví dụ, đây là một tuyên bố chuẩn bị:

Using c As New SqlConnection(ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString) 
    c.Open() 
using mytransaction = c.BeginTransaction() 

    Dim command = New SqlCommand("INSERT INTO yourtable(image) values (@image)", c) 
    ''# this is specific to the FileUploadControl but the idea is to get the 
    ''#image in a byte array; however you do it, it doesn't matter 
    Dim buffer(FileUpload1.PostedFile.ContentLength) As Byte 
    FileUpload1.PostedFile.InputStream.Read(buffer, 0, buffer.Length) 
    command.Parameters.AddWithValue("@image", buffer) 
    command.ExecuteNonQuery()  
mytransaction .Commit() 
End Using 
End Using 
+2

Xin lỗi nhưng ... Tôi tin rằng bạn đang sai? Họ không yêu cầu một giao dịch và có lợi ích về việc cho phép máy chủ sử dụng lại kế hoạch thực hiện. http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.prepare(v=vs.110).aspx – Basic

+0

@ Cơ bản những gì bạn mô tả là các thủ tục được lưu trữ. Trong khi tất cả các thủ tục lưu sẵn là các câu lệnh chuẩn bị, không phải tất cả các câu lệnh đã chuẩn bị đều được lưu trữ. –

+0

@ DavidSöderlund Tôi biết cả hai (trên thực tế, các tài liệu tôi liên kết để thảo luận cả hai). Điểm mà tôi đang cố gắng thực hiện là câu trả lời của Icarus dường như không chính xác, ví dụ tôi có thể biên dịch một câu lệnh chuẩn bị, cho phép máy chủ xây dựng kế hoạch thực hiện và sau đó sử dụng lại nó nhiều lần. Câu trả lời này bỏ qua mô hình đó hoàn toàn. – Basic

6

Dưới đây là một số mã ví dụ nhanh:

Using cn As New SqlConnection("your connection string here"), _ 
     cmd AS New SqlCommand("SELECT * FROM Table WHERE ID= @ID", cn) 

    cmd.Parameters.Add("@ID", SqlDbType.Int).Value = 12345 

    cn.Open() 
    Using rdr As SqlDataREader = cmd.ExecuteReader() 
     While rdr.Read() 
      'Do something with the record 
     End While 
     rdr.Close() 
    End Using 
End Using 

Tất nhiên bạn cần phải nhập System.Data và System.Data.SqlClient.

0
Dim datOleReader As SqlDataReader 
' Public con As New SqlConnection 

Public Function CHECK_CONNECTION(ByVal CON As SqlConnection) As SqlConnection 
    Try 
     If CON.State = ConnectionState.Broken Or CON.State = ConnectionState.Closed Then 
      CON.Open() 
     End If 
    Catch ex As Exception 
     CON.Close() 
     CON.Open() 
    End Try 

    Return CON 
End Function 

Public Function gGetMaxCode(ByVal strTable As String, ByVal strCode As String) As Long 
    Dim cmdtext As New SqlCommand 
    Try 
     ' con = clsexe.CHECK_CONNECTION(con) # 
     ' cmdtext.Connection = con # 
     cmdtext.Connection = CHECK_CONNECTION(con) ' # 
     cmdtext.CommandText = "SELECT ISNULL(MAX(" & strCode & "),0)+1 FROM " & strTable 
     datOleReader = cmdtext.ExecuteReader(CommandBehavior.SingleRow) 
     datOleReader.Read() 
     If datOleReader.IsDBNull(0) Then 
      Return 1 
     Else 
      Return datOleReader.Item(0) 
     End If 

    Catch ex As Exception 
     MsgBox(ex.Message.ToString) 
    Finally 
     datOleReader.Close() 
    End Try 
End Function 
Public Function gGetMaxCode(ByVal strTable As String, ByVal strCode As String, ByVal trans As SqlTransaction) As Long 
    Dim cmdtext As New SqlCommand 
    Try 
     ' con = clsexe.CHECK_CONNECTION(con) # 
     ' cmdtext.Connection = con # 
     cmdtext.Connection = CHECK_CONNECTION(con) ' # 
     cmdtext.CommandText = "SELECT ISNULL(MAX(" & strCode & "),0)+1 FROM " & strTable 
     cmdtext.Transaction = trans 
     datOleReader = cmdtext.ExecuteReader(CommandBehavior.SingleRow) 
     datOleReader.Read() 
     If datOleReader.IsDBNull(0) Then 
      Return 1 
     Else 
      Return datOleReader.Item(0) 
     End If 

    Catch ex As Exception 
     Throw ex 
    Finally 
     datOleReader.Close() 
    End Try 
End Function 

    Public Function ExecuteQry(ByVal qry As String) As Boolean 
    Dim cmdtext As New SqlCommand 
    Try 
     'con = cls.cnn # 
     'cmdtext.Connection = con # 
     cmdtext.Connection = CHECK_CONNECTION(con) ' # 
     cmdtext.CommandText = qry 
     cmdtext.CommandType = CommandType.Text 
     cmdtext.ExecuteNonQuery() 
     cmdtext.Dispose() 
     cmdtext = Nothing 
     ErrCode = True 
    Catch ex As Exception 
     'gErrMsg() 
     ErrCode = False 
     MsgBox(ex.Message.ToString) 
    Finally 
     'con.Close() 
    End Try 
End Function 
Public Function ExecuteQry(ByVal qry As String, ByVal trans As SqlTransaction) As Boolean 
    Dim cmdtext As New SqlCommand 
    Try 
     'con = cls.cnn # 
     'cmdtext.Connection = con # 
     cmdtext.Connection = CHECK_CONNECTION(con) ' # 
     cmdtext.CommandText = qry 
     cmdtext.CommandType = CommandType.Text 
     cmdtext.Transaction = trans 
     cmdtext.ExecuteNonQuery() 
     cmdtext.Dispose() 
     cmdtext = Nothing 
    Catch ex As Exception 
     Throw ex 
     'gErrMsg() 
     MsgBox(ex.Message.ToString) 
    Finally 
     'con.Close() 
    End Try 
End Function 


Public Function ExecuteSelect(ByVal qry As String, ByVal trans As SqlTransaction) As SqlDataReader 

    Dim cmdtext As New SqlCommand 
    Try 
     'con = cls.cnn # 
     'cmdtext.Connection = con # 
     cmdtext.Connection = CHECK_CONNECTION(con) ' # 
     cmdtext.CommandText = qry 
     cmdtext.CommandType = CommandType.Text 
     cmdtext.Transaction = trans 
     ExecuteSelect = cmdtext.ExecuteReader() 
     Return ExecuteSelect 
     cmdtext.Dispose() 
     cmdtext = Nothing 

    Catch ex As Exception 
     Throw ex 
     'MsgBox(ex.Message.ToString) 
    Finally 
     'clsexe.ExecuteSelect.Close() 
     'con.Close() 
    End Try 
End Function 


Public Function Executescalar(ByVal qry As String, ByVal trans As SqlTransaction) 

    Dim cmdtext As New SqlCommand 
    Try 
     'con = cls.cnn # 
     'cmdtext.Connection = con # 
     cmdtext.Connection = CHECK_CONNECTION(con) ' # 
     cmdtext.CommandText = qry 
     cmdtext.CommandType = CommandType.Text 
     cmdtext.Transaction = trans 
     Executescalar = cmdtext.ExecuteScalar 
     cmdtext.Dispose() 
     cmdtext = Nothing 

    Catch ex As Exception 
     Throw ex 
     ' MsgBox(ex.Message.ToString) 
    Finally 
     ' con.Close() 
    End Try 

End Function 


Public Function ExecuteAdapter(ByVal qry As String, ByVal trans As SqlTransaction) As SqlDataAdapter 
    Dim cmdtext As New SqlCommand 
    Dim da As New SqlDataAdapter 
    Try 
     'con = cls.cnn # 
     'cmdtext.Connection = con 
     cmdtext.Connection = CHECK_CONNECTION(con) ' # 
     cmdtext.CommandTimeout = 0 
     cmdtext.CommandText = qry 
     cmdtext.Transaction = trans 
     cmdtext.CommandType = CommandType.Text 
     da.SelectCommand = cmdtext 
     Return da 
     cmdtext.Dispose() 
     cmdtext = Nothing 
    Catch ex As Exception 
     Throw ex 
     'MsgBox(ex.Message.ToString) 
    Finally 
     ' con.Close() 
    End Try 
End Function 


Public Function Executedataset(ByVal qry As String) As DataSet 
    Dim cmdtext As New SqlCommand 
    Dim ds As New DataSet 
    Dim da As New SqlDataAdapter 
    Try 
     'con = cls.cnn # 
     'cmdtext.Connection = con # 
     cmdtext.Connection = CHECK_CONNECTION(con) ' # 
     cmdtext.CommandText = qry 
     cmdtext.CommandType = CommandType.Text 
     da.SelectCommand = cmdtext 
     da.Fill(ds) 
     cmdtext.Dispose() 
     cmdtext = Nothing 
    Catch ex As Exception 
     MsgBox(ex.Message.ToString) 
    End Try 
End Function 

Public Function ExecuteProcedure(ByVal qry As String) As Boolean 
    Dim cmdtext As New SqlCommand 
    Try 
     'con = cls.cnn # 
     'cmdtext.Connection = con # 
     cmdtext.Connection = CHECK_CONNECTION(con) ' # 
     cmdtext.CommandText = qry 
     cmdtext.CommandType = CommandType.StoredProcedure 
     cmdtext.ExecuteNonQuery() 
     cmdtext.Dispose() 
     cmdtext = Nothing 
    Catch ex As Exception 
     MsgBox(ex.Message.ToString) 
    End Try 
End Function 
+3

Bạn có thể thêm một số chi tiết ở đây không? Trong khi tôi có thể đánh giá cao ví dụ, một lời giải thích của một số phần sẽ được tốt đẹp. –

Các vấn đề liên quan