C# 如何对选定的数据库连接执行验证?

C# 如何对选定的数据库连接执行验证?,c#,asp.net,database,visual-studio,entity-framework,C#,Asp.net,Database,Visual Studio,Entity Framework,我正在制作一个桌面windows应用程序,它基本上选择了一个数据库、连接字符串。现在我想对所做的选择执行一些检查,我将如何进行此操作 我需要检查数据库是否包含特定的表名 这是到目前为止我的代码 private void Form1_Load(object sender, EventArgs e) { List<string> databaseName = GetDatabases(); if (databaseName.Any())

我正在制作一个桌面windows应用程序,它基本上选择了一个数据库、连接字符串。现在我想对所做的选择执行一些检查,我将如何进行此操作

我需要检查数据库是否包含特定的表名

这是到目前为止我的代码

    private void Form1_Load(object sender, EventArgs e)
    {
        List<string> databaseName = GetDatabases();
        if (databaseName.Any())
        {
            cboxDatabases.DataSource = databaseName;               
        }
    }

    private List<string> GetDatabases()
    {
        List<String> databases = new List<String>();

        SqlConnectionStringBuilder connection = new SqlConnectionStringBuilder();
        connection.DataSource = "localhost";
        // enter credentials if you want
        //connection.UserID = //get username;
        // connection.Password = //get password;
        connection.IntegratedSecurity = true;

        String strConn = connection.ToString();
        //create connection
        SqlConnection sqlConn = new SqlConnection(strConn);

        //open connection
        sqlConn.Open();

        //get databases
        DataTable tblDatabases = sqlConn.GetSchema("Databases");

        //close connection
        sqlConn.Close();

        //add to list
        foreach (DataRow row in tblDatabases.Rows)
        {
            String strDatabaseName = row["database_name"].ToString();
            databases.Add(strDatabaseName);
        }
        return databases;
    }
}
private void Form1\u加载(对象发送方,事件参数e)
{
List databaseName=GetDatabases();
if(databaseName.Any())
{
cboxDatabases.DataSource=数据库名称;
}
}
私有列表GetDatabases()
{
列表数据库=新列表();
SqlConnectionStringBuilder连接=新的SqlConnectionStringBuilder();
connection.DataSource=“localhost”;
//如果需要,请输入凭据
//connection.UserID=//获取用户名;
//connection.Password=//获取密码;
connection.IntegratedSecurity=true;
String strConn=connection.ToString();
//创建连接
SqlConnection sqlConn=新的SqlConnection(strConn);
//开放连接
sqlConn.Open();
//获取数据库
DataTable tblDatabases=sqlConn.GetSchema(“数据库”);
//密切联系
sqlConn.Close();
//添加到列表中
foreach(tbldatabase.Rows中的数据行)
{
字符串strDatabaseName=行[“数据库名称”]。ToString();
添加(strDatabaseName);
}
返回数据库;
}
}

}

您可以这样做:

public bool TableExists(SqlConnection sqlConn, string tableName) 
{
    string query = string.Format("SELECT count(*) as 'Exists' FROM dbo.sysobjects WHERE id = OBJECT_ID('[dbo].[{0}]')", tableName);

    SqlCommand cmd = new SqlCommand(query, sqlConn);

    int tableResult = (Int32)cmd.ExecuteScalar();

    return tableResult == 1;
}

@user1259076,即c#。它使用sql查询来确定表是否存在…@user1259076在关闭连接之前,您需要为每个要检查的表运行此代码。我建议用一个单独的方法来做,请参阅我的编辑。