谁能告诉我如何通过vb.net项目检查SQL Server中是否存在数据库和表?我想做的就是检查数据库是否存在(最好在“ If”语句中,除非有人有更好的处理方式),如果数据库确实存在,我会做一件事,如果数据库不存在,那么我会创建数据库与表和列。在这个问题上的任何帮助将不胜感激。
编辑:
该应用程序具有与服务器的连接。当应用程序在PC上运行时,我希望它检查数据库是否存在,如果存在,则继续执行应做的事情,但是如果数据库不存在,则首先创建数据库,然后继续进行操作它应该做什么。因此,基本上,我希望它首先在PC上运行然后创建数据库,然后再进行业务,然后在数据库每次在PC上运行之后创建数据库,然后让我查看数据库是否存在,然后再进行业务。之所以这样,是因为该应用程序将在多台PC上运行,我只希望创建一次数据库和表(第一次在PC上运行),然后在另一台PC上运行时,
您可以查询SQL Server以检查对象的存在。
要检查数据库是否存在,可以使用以下查询:
SELECT * FROM master.dbo.sysdatabases WHERE name = 'YourDatabase'
要检查表是否存在,可以对目标数据库使用此查询:
SELECT * FROM sys.tables WHERE name = 'YourTable' AND type = 'U'
下面的链接显示了如何使用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
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对数据库和表进行检查来在一次调用中完成:
EXISTS
IF NOT EXISTS (SELECT * FROM master.dbo.sysdatabases WHERE name = 'YourDatabase') BEGIN -- Database creation SQL goes here and is only called if it doesn't exist END -- You know at this point the database exists, so check if table exists IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'YourTable' AND type = 'U') BEGIN -- Table creation SQL goes here and is only called if it doesn't exist END
通过使用数据库和表名的参数一次调用上述代码,您将知道两者都存在。