2011年7月28日木曜日

→→→正規検索

Dim r As New Regex("<p>(.*?),/p.")
Dim m As Match = r.Match( source )
while m.success
     m = m.NextMatch()
End while

----------------------------------------------

Dim r As RegEx
Dim m As Match
r = New RegEx( パターン文字列 )
m = r.Match( 検索対象の文字列 )
while m.success
     m = m.NextMatch()  '見つかった文字列に対する処理
End while


123abc1456abc 
↓
 (23a)  (456a)だけを抜く

Dim i As Integer
Dim r As New Regex(" 1(.*?)bc1(.*?)b" )
Dim m As Match( "123abc1456abc" )
While Not ( m.Group(i).Value = "" )
           MsgBox( m.Group(i).Value, , i )
           i += 1
End While

-----------------------------------------

Dim results(20) As String
Dim i As Integer
Dim j As New Regex( "<.*?""(.*?)"".*?>" )
Dim m As Match
m = r.Match( " <tr></tr><a href=""/news/****/.html""abcdwxyz</tr>\n<tr/>")
While not (m.Group(i).Value =  "")
     results(i) = m.Groups(i).Value
     MsgBox(results(i), , i)
End While


-----------------------------------------

位置を見つける(発見位置が2番目なのに1番目となるから注意)
Dim text1 As String = "テ"
Dim text2 As String = "イクテス"
Dim r As New System.Text.RegularExpressions.Regex(text1)
Dim m As System.Text.RegularExpressions.Match = r.Match( text2 )
If m.Success Then
   MsgBox("Found match at position "& m.Index.ToString())   
End If

→→→OleDbCommandクラスについて

データソースに対して実行するSQLステートメント・ストアドプロシージャを表す
■OleDbCommandのインスタンスを作成すると
読み書き可能なプロパティが初期値に設定されます
実行するためのメソッド
1.ExecuteReader ------> 行を返すコマンド
2.ExecuteNonQuery ----> SqlのINSERT,DELETE,UPDATE,SETステートメントなどのコマンドを実行
3.ExecuteScalar -------> データベースから単一の値(集計値)を取得する

1.
例 OleDbCommandをOleDbDataAdapterおよびOleDbConnectionと共に使用して
Accessデータベースから行を選択する
Public Sub ReadMyData( ByVal ConnectionString As String)
      Dim queryString As String = "SELECT OrderID,CustomID FROM orders"
      Using connection As New OleDbConnection( ConnectionString )
           Dim command As New OleDbCommand( queryString, connection )
           connection.Open()
           Dim reader As OleDbDataReader = command.ExexuteReader()
           Whlie reader.Read()
                    ..................................................
           End While
           reader.Close()
      End Using
End Sub
2.
OleDbCommand.ExecuteNonQueryメソッド
    Dim instance As OleDbCommand
    Dim returnValue As Integer
    returnValue = instance.ExecuteNonQuery()


ExecuteNonQueryではカタログ操作を実行できる。(データベース構造の照会、オブジェクトの作成)
また、DataSetを使用せずにUpdate,Insert,Deleteステートメントを実行してデータベース内の
データを変更することもできる
例
Private Sub CreateOleDbCommand(ByVal queryString As String,
                                                 ByVal connectionString As String)
       Using connection As New OleDbConnection( ConnectionString )
              connection.Open()
              Dim command As New OleDbCommand(queryString, connection )
              command.ExecuteNonQuery()
       End Using
End Sub


3.
OleDbCommand.ExecuteScalarメソッド
クエリを実行し、そのクエリが返す結果セットの最初の行にある
最初の列を返します。残りの列または行は無視されます
Public Sub CreateMyOleDbCommand(queryString As String,connection As OleDbconnection)
    Dim command As New OleDbCommand ( queryString , connection )
    command.connection.open()
    command.ExecuteScalar()
    connection.close
End Sub







→→→VBテキスト読み込み

Dim sCom As SqlCilent.SqlCommand
Dim sCn As SqlCilent.SqlConnection = New SqlCilent.SqlConnection()
scn.ConnectionString = "Data Source=.\SQLEXPRESS; AttachDbFileName = " &
                                 & My.Application.Info.DirectoryPath &
                                "****.mdf; Integrated Security=True; Connect TimeOut=30;
                               User Instance = True"
Try
      sCn.Open()
      sCom = New SqlCilent.SqlCommand
        ("BULK INSERT 読込 FROM 'C:\テキスト.txt' WITH (Fieldterminator = ',' ,
          rowterminator = '\n' )" , sCn)

      sCom.ExecuteNonQuery()
Catch ex As Exception
      MessageBox.Show( ex.Message )
End Try

sCn.Close()

→→→VB2005Express SQLExpress 接続

Dim sCom As SqlClient.SqlCommandBuilder
Dim dSet As DataSet = New DataSet()
Dim dAdp As SqlClient.SqlDataAdapter
Dim scn As SqlClient.SqlConnection = New SqlClient.SqlConnection()
scn.ConnectionString = "Data Source=.\SQLEXPRESS;AttchDbFile name=" &
                                My.Application.Info.DirectoryPath &
                                "\***.mdf; Integrated Security = True; Connect TimeOut=30;
                                  User Instance = True"
dAdp = New SqlClient.SqlDataAdapter("SELECT * FROM テーブル" , scn)
dAdp.Fill( dSet, "t_テーブル" )
sCom = New SqlClient.SqlCommandBuilder( dAdp )

For i As Integer = 0 To dSet.Tables("t_テーブル").Rows.Count - 1
      dSet.Tables("t_テーブル").Rows(i)("項目") = "代入値"
Next

dAdp.Update( dSet, "t_テーブル")
scn.Close()
-----------------------------------------------------------------------
データセットに取得したレコードの更新をデータベースに反映するには
SqlCommandBuilderオブジェクトを生成してから
SqlDataAdapterオブジェクトのUpdateメソッドを実行する

SqlCommandBuilderオブジェクトの生成はNewキーワードを使い
引数にSqlDataAdapterオブジェクトを指定する

New SqlCilent.SqlCommandBuilder( SqlDataAdapter )

SqlCommandBuilderオブジェクトはデータセットの変更に対応するSQL文を自動的に作成します

データセットのレコード更新はDataRowオブジェクトに、フィールドのインデックスまたは名前を指定し
新たな値を代入します
DataTableオブジェクト.Rows( レコードのインデックス )( フィールドのインデックス/名前 ) = 値

更新後,SqlDataAdapterオブジェクトのUpdateメソッドを実行すると
データセットの変更がデータベースに反映される

Updateメソッドの引数には、DataSetオブジェクトとテーブル名を指定する

SqlDataAdapterオブジェクト.Update( DataSetオブジェクト, テーブル名 )

2011年7月27日水曜日

→→→VB.NET ACCESS97との接続

Dim cCom As OleDbCommandBuilder
Dim dSet As DataSet = New DataSet()
Dim dAdp As OleDbDataAdapter
Dim ocn As OleDbConnection = New OleDbConnection()
ocn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;
                                  DataSource=D:\***.mdb;Persist Security Info=False"
dAdp = New OleDbDataAdapter("SELECT * FROM テーブル", ocn)
dAdp.Fill( dSet , "t" )

Dim i As Integer
For i = 0 To 999
   dSet.Tables("t").Rows(i)("列名")  = dSet.Tables("t").Rows(i)("列名") & " 様"
Next

cCom = New OleDbCommandBuilder(dAdp)
dAdp.Update( dSet , "t" )

→→→SQL命令のサンプル

SELECT 住所, 住所 & ' 町' FROM テーブル
SELECT 住所, Right(住所, 2) FROM テーブル
SELECT 住所, Len(住所) FROM テーブル

SELECT TOP10 * FROM テーブル
SELECT TOP10 PERCENT * FROM テーブル

SELECT * FROM テーブル WHERE ID<= 50
SELECT * FROM テーブル WHERE 住所 = '北海道'
SELECT * FROM テーブル WHERE カナ住所 LIKE 'ホ%'
SELECT * FROM テーブル WHERE カナ住所 LIKE '[カ-コ]%'

SELECT * FROM テーブル WHERE LEN(住所) = 4
SELECT * FROM テーブル WHERE ID>=5 AND ID<=19
SELECT * FROM テーブル WHERE ID BETWEEN 5 AND 19