私がやりたいことは、特定の列がテーブルに既に存在するかどうかを最初に確認し、そうでない場合は追加することです。これをビジュアルベーシックで実装したい。誰かがコメントして各ステップを簡単に説明するのに少し時間がかかった場合、私はそれを大いに感謝します.
3 に答える
列が存在するかどうかを判断するには、2 つの方法があります。それを使用して、存在しない場合はエラーをキャッチするか、データベースからメタデータを読み取るSQL Server: Extract Table Meta-Data (説明、フィールド、およびそれらのデータ)を参照してください。種類)
列を追加する必要があることがわかったら、ALTER TABLE コマンドを使用して列をテーブルに追加します。
列が存在するかどうかを確認し、存在しない場合は作成するvb.net スクリプトを次に示します。
'''概要 ''' データベースにテーブルが存在するかどうかを確認します。''' ''' チェックするテーブル名 ''' 接続先の接続文字列 ''' Access または SQL で動作 '''
Public Function DoesTableExist(ByVal tblName As String, ByVal cnnStr As String) As Boolean
' For Access Connection String,
' use "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
' accessFilePathAndName
' Open connection to the database
Dim dbConn As New OleDbConnection(cnnStr)
dbConn.Open()
' Specify restriction to get table definition schema
' For reference on GetSchema see:
' http://msdn2.microsoft.com/en-us/library/ms254934(VS.80).aspx
Dim restrictions(3) As String
restrictions(2) = tblName
Dim dbTbl As DataTable = dbConn.GetSchema("Tables", restrictions)
If dbTbl.Rows.Count = 0 Then
'Table does not exist
DoesTableExist = False
Else
'Table exists
DoesTableExist = True
End If
dbTbl.Dispose()
dbConn.Close()
dbConn.Dispose()
終了機能
''' ''' フィールドがテーブルに存在するかどうかを確認します。''' ''' チェックインするテーブル名 ''' チェックするフィールド名 ''' 接続文字列 ''' '''
Public Function DoesFieldExist(ByVal tblName As String, _ ByVal fldName As String, _ ByVal cnnStr As String) As Boolean ' アクセス接続文字列の場合、' "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ' accessFilePathAndName を使用
' Open connection to the database
Dim dbConn As New OleDbConnection(cnnStr)
dbConn.Open()
Dim dbTbl As New DataTable
' Get the table definition loaded in a table adapter
Dim strSql As String = "Select TOP 1 * from " & tblName
Dim dbAdapater As New OleDbDataAdapter(strSql, dbConn)
dbAdapater.Fill(dbTbl)
' Get the index of the field name
Dim i As Integer = dbTbl.Columns.IndexOf(fldName)
If i = -1 Then
'Field is missing
DoesFieldExist = False
Else
'Field is there
DoesFieldExist = True
End If
dbTbl.Dispose()
dbConn.Close()
dbConn.Dispose()
終了機能