[VB.NET|SQLServer] レコードの削除・挿入・更新(トランザクション有)

    '*** 宣言
    Imports System.Data.SqlClient
    Private Conn As SqlConnection
    Private DA As SqlDataAdapter
    Private DS As DataSet

Dim strConn As String = _
"Server=localhost;User ID=***;Password=***;database=Test;"
Dim SqlTran As SqlTransaction
Dim strSQL As String
Dim cmdSQL As SqlCommand

Dim dRow As DataRow
Dim dCol As DataColumn

Dim i As Integer
Dim j As Integer

'*** Form_Load
Me.Conn = New SqlConnection(strConn)
Me.DA = New SqlDataAdapter
Me.DS = New DataSet
Me.Conn.Open()

'*** Form_Closed
Me.DS.Dispose()
Me.DA.Dispose()
Me.Conn.Close()
Me.Conn.Dispose()

'排他処理する場合?
Me.SqlTran = Me.Conn.BeginTransaction(IsolationLevel.Serializable)
strSQL = "SELECT * FROM TestTable WITH(ROWLOCK, UPDLOCK) ORDER BY TestCol1 ASC"
'--- SELECT
        Try
            Me.SqlTran = Me.Conn.BeginTransaction()

strSQL = "SELECT * FROM TestTable ORDER BY TestCol1 ASC"
Me.cmdSQL = New SqlCommand(strSQL, Me.Conn, Me.SqlTran)
Me.DA.SelectCommand = Me.cmdSQL

Me.DS.Clear()
Me.DA.Fill(Me.DS, "TestTable")

Call ListView_Disp(Me.DS)
Me.SqlTran.Commit()

Catch ex As Exception
Debug.WriteLine(ex.ToString)
MessageBox.Show(ex.ToString)
Me.SqlTran.Rollback()
Finally
Me.cmdSQL.Dispose()
Me.SqlTran.Dispose()
End Try

 '--- INSERT
        dRow = Me.DS.Tables("TestTable").NewRow
        dRow(0) = CInt(Me.TextBox1.Text)
        dRow(1) = CStr(Me.TextBox2.Text)
        dRow(2) = CStr(Me.TextBox3.Text)
        Me.DS.Tables("TestTable").Rows.Add(dRow)

Try
Me.SqlTran = Me.Conn.BeginTransaction()

strSQL = "INSERT INTO TestTable VALUES (@Col1, @Col2, @Col3)"
Me.cmdSQL = New SqlCommand(strSQL, Me.Conn, Me.SqlTran)
Me.cmdSQL.Parameters.Add("@Col1", SqlDbType.Int, 4, "TestCol1")
Me.cmdSQL.Parameters.Add("@Col2", SqlDbType.VarChar, 50, "TestCol2")
Me.cmdSQL.Parameters.Add("@Col3", SqlDbType.VarChar, 50, "TestCol3")
Me.DA.InsertCommand = Me.cmdSQL

Me.DA.InsertCommand.Parameters("@Col1").Value = CInt(Me.TextBox1.Text)
Me.DA.InsertCommand.Parameters("@Col2").Value = CStr(Me.TextBox2.Text)
Me.DA.InsertCommand.Parameters("@Col2").Value = CStr(Me.TextBox3.Text)
Me.DA.Update(Me.DS, "TestTable")

Call ListView_Disp(Me.DS)
Me.SqlTran.Commit()

Catch ex As Exception
Debug.WriteLine(ex.ToString)
MessageBox.Show(ex.ToString)
Me.SqlTran.Rollback()
Finally
Me.cmdSQL.Dispose()
Me.SqlTran.Dispose()
End Try

 '--- DELETE
        For Each dRow In DS.Tables("TestTable").Rows
            If CInt(dRow(0)) = CInt(TextBox1.Text) Then
                dRow.Delete()
                Exit For
            End If
        Next

Try
Me.SqlTran = Me.Conn.BeginTransaction

strSQL = "DELETE FROM TestTable WHERE TestCol1 = @Col1"
Me.cmdSQL = New SqlCommand(strSQL, Me.Conn, Me.SqlTran)
Me.cmdSQL.Parameters.Add("@Col1", SqlDbType.Int, 4, "TestCol1")
Me.DA.DeleteCommand = Me.cmdSQL

Me.DA.DeleteCommand.Parameters("@Col1").Value = CInt(Me.TextBox1.Text)
Me.DA.Update(Me.DS, "TestTable")

Call ListView_Disp(Me.DS)
Me.SqlTran.Commit()

Catch ex As Exception
Debug.WriteLine(ex.ToString)
MessageBox.Show(ex.ToString)
Me.SqlTran.Rollback()
Finally
Me.cmdSQL.Dispose()
Me.SqlTran.Dispose()
End Try

'--- UPDATE
        For Each dRow In DS.Tables("TestTable").Rows
            If CInt(dRow(0)) = CInt(TextBox1.Text) Then
                dRow(1) = TextBox2.Text
                dRow(2) = TextBox3.Text
                Exit For
            End If
        Next

Try
Me.SqlTran = Me.Conn.BeginTransaction

strSQL = "UPDATE TestTable SET TestCol2 = @Col2, TestCol3 = @Col3 WHERE TestCol1 = @Col1"
Me.cmdSQL = New SqlCommand(strSQL, Me.Conn, Me.SqlTran)
Me.cmdSQL.Parameters.Add("@Col1", SqlDbType.Int, 4, "TestCol1")
Me.cmdSQL.Parameters.Add("@Col2", SqlDbType.VarChar, 50, "TestCol2")
Me.cmdSQL.Parameters.Add("@Col3", SqlDbType.VarChar, 50, "TestCol3")
DA.UpdateCommand = Me.cmdSQL

Me.DA.UpdateCommand.Parameters("@Col1").Value = CInt(Me.TextBox1.Text)
Me.DA.UpdateCommand.Parameters("@Col2").Value = CStr(Me.TextBox2.Text)
Me.DA.UpdateCommand.Parameters("@Col2").Value = CStr(Me.TextBox3.Text)
Me.DA.Update(Me.DS, "TestTable")

Call ListView_Disp(Me.DS)
Me.SqlTran.Commit()

Catch ex As Exception
Debug.WriteLine(ex.ToString)
MessageBox.Show(ex.ToString)
Me.SqlTran.Rollback()
Finally
Me.cmdSQL.Dispose()
Me.SqlTran.Dispose()
End Try

2005 / 11 / 01

[ASP.NET|SQL Server] SQL Server に接続

 
       Dim Conn As New System.Data.SqlClient.SqlConnection
       Dim Cmd As New System.Data.SqlClient.SqlCommand

Conn.ConnectionString = "server=localhost;User=sa;Password=;database=TEST;"
Cmd.Connection = Conn
Cmd.CommandText = "SELECT * FROM UserTable ORDER BY UserName ASC"

        Dim Conn As System.Data.SqlClient.SqlConnection
        Dim Cmd As System.Data.SqlClient.SqlCommand
 
        Conn = New SqlConnection("server=localhost;User ID=sa;Password=;database=TEST;")
        Conn.Open()

Cmd = New SqlCommand("SELECT * FROM UserTable ORDER BY UserName ASC", Conn)

        '終了処理
        Cmd.Dispose()
        Conn.Dispose()

2005 / 10 / 06

[ASP.NET|SQL Server] SQLServer認証 と WINDOWS認証

        Dim Conn As New System.Data.SqlClient.SqlConnection
        Dim strConn As String

If Type = "SQLServerSQL" Then

'▼SQLServer認証▼
strConn = "Persist Security Info=True;" & _
"database=master;" & _
"server=localhost;" & _
"User=sa;" & _
"Password=;"

ElseIf Type = "SQLServerWIN" Then

'▼WINDOWS認証▼
strConn = "Integrated Security=SSPI;" & _
"Persist Security Info=False;" & _
"Initial Catalog=master;" & _
"Data Source=hocalhost;"
End If

Conn.ConnectionString = strConn

2005 / 10 / 06

[ASP.NET|SQL Server] SQL Server へアップデート

            Dim NewPass As String
            
            NewPass = "****"
            Dim Conn As SqlConnection
            Dim Cmd As SqlCommand

Conn = New SqlConnection("server=localhost;User ID=sa;Password=;database=TEST;")
Conn.Open()

Cmd = New SqlCommand("UPDATE UsersMst SET Pass=@Pass WHERE Id=@Id", Conn)

Cmd.Parameters.Add("@Id", SqlDbType.VarChar, 6)
Cmd.Parameters("@Id").Value = User.Identity.Name
Cmd.Parameters.Add("@Pass", NewPass)
Cmd.ExecuteNonQuery()

Cmd.Dispose()
Conn.Dispose()

2005 / 10 / 06

[ASP.NET|SQL Server] SQL Server からドロップダウンリストへ

        Dim Conn As SqlConnection
        Dim Cmd As SqlCommand
        Dim DR As SqlDataReader

Conn = New SqlConnection("server=localhost;User ID=sa;Password=;database=TEST;")
Conn.Open()

Cmd = New SqlCommand("SELECT * FROM RolesMst ORDER BY RoleNO ASC", Conn)

'クエリを実行して、DataReader を確立する
DR = Cmd.ExecuteReader

ddlRole.Items.Add(New ListItem("選択してください", ""))

'DataReader から1行ずつ読み込む
Do While (DR.Read())
'ドロップダウンリストに各フィールドの内容を追加する
ddlRole.Items.Add(New ListItem(DR.Item("RoleText"), DR.Item("RoleValue")))
Loop

DR.Close()
Cmd.Dispose()
Conn.Dispose()

ddlRole.SelectedIndex = 0

2005 / 10 / 06

[ASP.NET|SQL Server] SQL Server から一件アイテム取得

        Dim Conn As SqlConnection
        Dim Cmd As SqlCommand

'コネクションセット
Conn = New SqlConnection("server=localhost;User ID=sa;Password=;database=TEST;")
Conn.Open()

'パスワード
Cmd = New SqlCommand("SELECT Pass FROM UsersMst WHERE Id=@Id", Conn)
Cmd.Parameters.Add("@Id", SqlDbType.VarChar, 6)
Cmd.Parameters("@Id").Value = TB_Id
DB_Pass = Cmd.ExecuteScalar

'ロール
Cmd = New SqlCommand("SELECT Role FROM UsersMst WHERE Id=@Id", Conn)
Cmd.Parameters.Add("@id", SqlDbType.VarChar, 20)
Cmd.Parameters("@Id").Value = TB_Id

If (IsDBNull(Cmd.ExecuteScalar)) Then
DB_Role = ""
Else
DB_Role = Cmd.ExecuteScalar
End If

Cmd.Dispose()
Conn.Dispose()

2005 / 10 / 06

[ASP.NET|SQL Server] SQL Server から複数アイテム取得

        Dim Conn As SqlConnection
        Dim Cmd As SqlCommand
        Dim DR As SqlDataReader

'コネクションセット
Conn = New SqlConnection("server=localhost;User ID=sa;Password=;database=TEST;")
Conn.Open()

'コマンドセット
Cmd = New SqlCommand("SELECT * FROM UsersMst WHERE Id=@Id", Conn)
Cmd.Parameters.Add("@Id", SqlDbType.VarChar, 6)
Cmd.Parameters("@Id").Value = User.Identity.Name

'データリーダーセット
DR = Cmd.ExecuteReader
DR.Read()
DB_Pass = DR.Item("Pass") 'DBの列名
DB_LName = DR.Item("LName")
DB_FName = DR.Item("FName")
DB_Kana = DR.Item("Kana")

'後処理
DR.Close()
Cmd.Dispose()
Conn.Dispose()

2005 / 10 / 06

[SQL Server] SQL Serverデータ型

説明
bit 1 または 0 の整数データを格納するデータ型です。
int -2,147,483,648 から 2,147,483,647 までの整数データを格納するデータ型です。
smallint -32,768 から 32,767 までの整数データを格納するデータ型です。
tinyint 0 から 255 までの整数データを格納するデータ型です。
money -922,337,203,685,477.5808 から922,337,203,685,477.5807 までの金額データ値を格納するデータ型です。
smallmoney -214,748.3648 から +214,748.3647 までの金額データ値を格納するデータ型です。
float -1.79E + 308 から 1.79E + 308 までの浮動小数点数のデータを格納するデータ型です。
real -3.40E + 38 から 3.40E + 38 までの浮動小数点数のデータを格納するデータ型です。
datetime 1753 年 1 月 1 日から 9999 年 12 月 31 日までの日付と時刻データを格納するデータ型です。
smalldatetime 1900 年 1 月 1 日から 2079 年 6 月 6 日までの日付と時刻データを格納するデータ型です。
char 8,000 文字以内の固定長の Unicode 以外の文字データを格納するデータ型です。
varchar 8,000 文字以内の可変長の Unicode 以外のデータを格納するデータ型です。
text 2,147,483,647 文字以内の可変長の Unicode 以外のデータを格納するデータ型です。
binary 8,000 バイト以内の固定長のバイナリ データを格納するデータ型です。
varbinary 8,000 バイト以内の可変長のバイナリ データを格納するデータ型です。
image 2,147,483,647 バイト以内の可変長のバイナリ データを格納するデータ型です。

2005 / 07 / 30