vb.netとMicrosoft SQL Server 2008で準備されたステートメントが新しくなりました。接続文字列とプリペアドステートメントを実行してデータベースに接続するための良いソースが見つかりません。誰かが私に例を示したり、役に立つかもしれないリソースを教えてもらえますか?VB.NETで準備されたステートメント
5
A
答えて
4
準備文は、トランザクションに囲まれたパラメータ化されたSqlCommands以外は何もありません。
例えば、これは準備文です:
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
6
はここでいくつかの簡単なサンプルコードです:もちろん
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
[インポートSystem.Dataと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
詳細はこちらでお願いします。私はこの例を理解することができますが、いくつかの部分の説明がうまくいくでしょう。 –
関連する問題
- 1. TSで準備されたステートメント
- 2. トランザクション内で準備されたステートメント
- 3. PHPのUPDATE準備されたステートメント
- 4. Javaで準備されたステートメントの結合
- 5. 準備されたステートメントでユーザーデータを取得しています
- 6. sqliteトランザクションステートメントで準備されたステートメントを使用
- 7. PHPでMySQLiの準備されたステートメントが動作しない
- 8. 準備されたステートメントを使用したSQL結合
- 9. 準備されたステートメントexecuteUpdateが更新ステートメントで動作していません
- 10. 準備されたステートメントがデータをフェッチしない
- 11. 準備されたステートメントからデータを取得する
- 12. PDO Numステートメントの準備行
- 13. Mysqli準備ステートメント+バインディングオーダーBY
- 14. 準備完了ステートメントでSQL例外がスローされる
- 15. 私の準備されたステートメントは指定されていません
- 16. PDOで準備されたステートメントでMySQLに空の変数を挿入する
- 17. ヌードオブジェクトリファレンスで準備されたリスナーのアンドロイドメディアプレーヤー
- 18. 準備完了ステートメントで最後に挿入されたIDを取得
- 19. 準備されたステートメントなしでSQLインジェクションを防ぐ方法は?
- 20. H2 JDBC準備済みステートメント例外
- 21. PDO準備ステートメントの安全性
- 22. どのようにスキップするには? in準備されたステートメント
- 23. Java準備されたステートメントがデータを入力せず、キャッチにヒットする
- 24. 準備された2つのステートメントを結合していない
- 25. 準備されたステートメントを使用してPostgreSQLのテーブルコメントを作成する
- 26. 私のMySQLの準備されたステートメントは動作しません
- 27. SQLSTATE [42000]エラーを修正する方法。準備されたステートメントの使用
- 28. 一度に2つのテーブルに挿入するには?準備されたステートメント
- 29. 準備されたステートメントを使用してSQLSERVERのUnicodeデータを検索する
- 30. 準備されたステートメントとしてDB :: insertを使用する方法LARAVEL
申し訳ありませんが...私はあなたが間違っていると考えていますか?それらはトランザクションを必要とせず、サーバーに実行計画を再利用させるという面で利点があります。 http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.prepare(v=vs.110).aspx – Basic
@Basicあなたが説明したのはストアドプロシージャです。すべてのストアドプロシージャは準備ステートメントですが、準備済みステートメントはすべてストアドプロシージャではありません。 –
@DavidSöderlund私は両方のことを知っています(実際には、両方を議論するためにリンクしているドキュメント)。私が作ろうとしてきたことは、イカルスの答えは正確ではないようです。たとえば、準備されたステートメントをコンパイルして、サーバーに実行計画を作成させてから、それを複数回再利用できるようにします。この答えはそのパターンを完全に省略します。 – Basic