Back to Top

プログラムの覚書

VB.NET SQL文を作成し実行する

パラメータを指定して、SQL文を作成する SqlParameter クラスを説明します。

置き換える変数は、@から始まる文字列で記述します。

SqlParameter に変数と値を設定します。

SqlParameter を省略して、SqlCommand.Parameters に直接 SqlCommand.Parameters に変数と値を設定することもできます。

パラメータで、SQL作成し実行する

Dim builder As SqlConnectionStringBuilder = New SqlConnectionStringBuilder()
builder.DataSource = ".\SQLEXPRESS"
builder.AttachDBFilename = "D:\DB\TestDB.mdf"
builder.IntegratedSecurity = True
builder.UserInstance = True
builder.MultipleActiveResultSets = True
Dim ConnectString As String = builder.ToString()

Using sqlConnect As New SqlConnection(ConnectString)
    sqlConnect.Open()

    Dim sqlStr As String = "INSERT INTO Table_1 (Item1,Item2) VALUES (@Item1,@Item2)"

    Dim command As SqlCommand = New SqlCommand(sqlStr, sqlConnect)

    Dim val As String = "AAAAA"
    Dim p1 As SqlParameter = New SqlParameter("@Item1", val)
    command.Parameters.Add(p1)

    'SqlParameter省略追加
    command.Parameters.Add("@Item2", SqlDbType.Char).Value = "XXXX2"

    command.ExecuteNonQuery()

End Using

※上記の文でvalの変数の部分を直接数値を設定することができますが、Stringの場合直接設定するとうまく置き換えすることができなくなります。

 

エスケープ処理

Parameters を使用する場合、エスケープ処理をする必要がありません。

使用しない場合は、値のエスケープ処理を行わないとエラーとなります。

Public Function ValueEscape(str As String) As String
    Dim sb As New System.Text.StringBuilder(str)

    sb.Replace("'", "''")
    sb.Replace(",", ",,")
    sb.Replace(Chr(&H09), "\" & Chr(&H09))           'TAB
    sb.Replace(Chr(&H13), "\" & Chr(&H13))           'CR
    sb.Replace(Chr(&H00), "\" & Chr(&H00))           'LF

    Return sb.ToString()
End Function

 

VB.NET レコード数を取得する

テーブルのレコード数を取得する方法を記載します。

レコード数の取得は、ExecuteScalar メソッドを使用します。

レコード数を取得する

Dim builder As SqlConnectionStringBuilder = New SqlConnectionStringBuilder()
builder.DataSource = ".\SQLEXPRESS"
builder.AttachDBFilename = "D:\DB\TestDB.mdf"
builder.IntegratedSecurity = True
builder.UserInstance = True
builder.MultipleActiveResultSets = True
Dim ConnectString As String = builder.ToString()

Using sqlConnect As New SqlConnection(ConnectString)
    sqlConnect.Open()

    Dim command As SqlCommand = New SqlCommand("SELECT COUNT(*) FROM Table_1", sqlConnect)

    Dim Count As Integer = command.ExecuteScalar()

    MessageBox.Show(Count.ToString)
End Using