-1

我想要做的是首先检查某个列是否已经存在于表中,如果不添加它。我想通过visual basic来实现这一点。如果有人花一点时间来评论并简要解释每个步骤,我将不胜感激。

4

3 回答 3

0

这是用于检查列是否存在的 vb.net 脚本,如果不存在,请创建它..

''' summary ''' 检查数据库中是否存在表。''' ''' 要检查的表名 ''' 连接字符串以连接到 ''' 适用于 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()

结束功能

于 2013-02-20T05:01:55.827 回答
0

有两种方法可以确定列是否存在:尝试使用它并在不存在时捕获错误,或者从数据库中读取元数据,请参阅SQL Server:提取表元数据(描述、字段及其数据)类型)

一旦您知道需要添加列,您就可以使用 ALTER TABLE 命令将该列添加到表中。

于 2013-02-20T02:25:06.613 回答
0
    Dim connString As String = "Data Source=NameOfMachine\InstanceofSQLServer;Initial Catalog=NameOfDataBase;Integrated Security=True"
    Dim MyCol As String = "NameOfColumn"
    Dim MyTable As String = "[NameOfTable]" ' or "[Name Of Table]" use brackets if table name contains spaces or other illegal Characters
    Dim MySql As String = "IF NOT EXISTS(SELECT * FROM INFORMATION_SCHEMA.COLUMNS" & vbCrLf &
"WHERE TABLE_NAME = '" & MyTable & "' AND COLUMN_NAME = '" & MyCol & "')" & vbCrLf &
"BEGIN" & vbCrLf &
"ALTER TABLE [dbo]." & MyTable & " ADD" & vbCrLf & "[" & MyCol & "] INT NULL ;" & vbCrLf & "END"

    Try
        ' MsgBox(MySql)- this msg box shows the Query so I can check for errors- Not required for code.
        Dim dbConn = New SqlConnection(connString)' Note ConnString must be declared in the form class or within this Sub. Connstring is your connection string
        Dim dbCmd = New SqlCommand(MySql, dbConn)
        dbConn.Open()
        dbCmd.ExecuteNonQuery()
        'MessageBox.Show("Ready To Load Addendums")

        dbConn.Close()

    Catch ex As Exception
        MsgBox("We've encountered an error;" & vbCrLf & ex.Message)

    End Try
于 2017-02-27T13:23:40.887 回答