如何检查数据库和表在vb .net项目中的sql服务器中是否存在?

Cod*_*r92 2 sql vb.net sql-server sql-server-2008

谁能告诉我如何通过vb.net项目检查sql服务器中是否存在数据库和表?我想做的是检查数据库是否存在(最好在“ If”语句中,除非有人有更好的处理方式),如果数据库确实存在,我会做一件事,如果数据库不存在,我会创建数据库与表和列。在此问题上的任何帮助将不胜感激。

编辑:

该应用程序已连接到服务器。当应用程序在PC上运行时,我希望它检查数据库是否存在,如果存在,那么它将继续执行应做的工作,但是如果数据库不存在,则它将首先创建数据库,然后继续进行操作它应该做什么。因此,基本上,我希望它首先在PC上运行然后创建数据库,然后再处理业务,然后在数据库每次在PC上运行之后创建数据库,然后让数据库运行。之所以这样,是因为该应用程序将在多台PC上运行,我只希望创建一次数据库和表(第一次在PC上运行),然后在另一台PC上运行时,

Tan*_*ner 5

您可以查询SQL Server以检查对象的存在。

要检查数据库是否存在,可以使用以下查询:

SELECT * FROM master.dbo.sysdatabases WHERE name = 'YourDatabase'
Run Code Online (Sandbox Code Playgroud)

要检查表是否存在,可以对目标数据库使用此查询:

SELECT * FROM sys.tables WHERE name = 'YourTable' AND type = 'U'
Run Code Online (Sandbox Code Playgroud)

下面的链接显示了如何使用VB.NET代码检查SQL Server是否存在数据库:

使用vb.net检查服务器上是否存在SQL数据库

上面链接的参考代码:

Public Shared Function CheckDatabaseExists(ByVal server As String, _
                                           ByVal database As String) As Boolean
    Dim connString As String = ("Data Source=" _
                + (server + ";Initial Catalog=master;Integrated Security=True;"))

    Dim cmdText As String = _
       ("select * from master.dbo.sysdatabases where name=\’" + (database + "\’"))

    Dim bRet As Boolean = false

    Using sqlConnection As SqlConnection = New SqlConnection(connString)
        sqlConnection.Open
        Using sqlCmd As SqlCommand = New SqlCommand(cmdText, sqlConnection)
            Using reader As SqlDataReader = sqlCmd.ExecuteReader
                bRet = reader.HasRows
            End Using
        End Using
    End Using

    Return bRet

End Function
Run Code Online (Sandbox Code Playgroud)

您可以用另一种方式执行检查,因此可以通过EXISTS对数据库和表进行检查来在一次调用中完成:

Public Shared Function CheckDatabaseExists(ByVal server As String, _
                                           ByVal database As String) As Boolean
    Dim connString As String = ("Data Source=" _
                + (server + ";Initial Catalog=master;Integrated Security=True;"))

    Dim cmdText As String = _
       ("select * from master.dbo.sysdatabases where name=\’" + (database + "\’"))

    Dim bRet As Boolean = false

    Using sqlConnection As SqlConnection = New SqlConnection(connString)
        sqlConnection.Open
        Using sqlCmd As SqlCommand = New SqlCommand(cmdText, sqlConnection)
            Using reader As SqlDataReader = sqlCmd.ExecuteReader
                bRet = reader.HasRows
            End Using
        End Using
    End Using

    Return bRet

End Function
Run Code Online (Sandbox Code Playgroud)

通过使用数据库和表名的参数一次调用上述代码,您将知道两者都存在。