Cod*_*r92 2 sql vb.net sql-server sql-server-2008
谁能告诉我如何通过vb.net项目检查sql服务器中是否存在数据库和表?我想做的是检查数据库是否存在(最好在“ If”语句中,除非有人有更好的处理方式),如果数据库确实存在,我会做一件事,如果数据库不存在,我会创建数据库与表和列。在此问题上的任何帮助将不胜感激。
编辑:
该应用程序已连接到服务器。当应用程序在PC上运行时,我希望它检查数据库是否存在,如果存在,那么它将继续执行应做的工作,但是如果数据库不存在,则它将首先创建数据库,然后继续进行操作它应该做什么。因此,基本上,我希望它首先在PC上运行然后创建数据库,然后再处理业务,然后在数据库每次在PC上运行之后创建数据库,然后让数据库运行。之所以这样,是因为该应用程序将在多台PC上运行,我只希望创建一次数据库和表(第一次在PC上运行),然后在另一台PC上运行时,
您可以查询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是否存在数据库:
上面链接的参考代码:
Run Code Online (Sandbox Code Playgroud)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
您可以用另一种方式执行检查,因此可以通过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)
通过使用数据库和表名的参数一次调用上述代码,您将知道两者都存在。