抛出数据库未找到异常

本文关键字:异常 数据库 | 更新日期: 2023-09-27 18:11:01

是否有一个"内置"异常在。net DatabaseNotFound,我可以使用的程序连接到数据库服务器执行维护任务?

我觉得应该有,但我一直没能找到。在下面的代码中,您可以看到我检查了(在app.config中定义的)数据库的存在性。

XML文件:

<DatabaseConnection source="myLaptop" username="user" password="pass" defaultDatabase="DB1">
    <database companyIdentTable="tableA" companyIdentField="fieldA">Database_A</database>
    <database companyIdentTable="tableB" companyIdentField="fieldB">Database_B</database>
</DatabaseConnection>
c#代码:

for (int i = 0; i < appSettings.DatabaseConnection.database.Length; i++)
{
    string database = builder.QuoteIdentifier(appSettings.DatabaseConnection.database[i].Value); //Security measure
    command = new SqlCommand("SELECT COUNT(1) FROM master.dbo.sysdatabases WHERE name='" + database + "'", conn);
    if ((int)command.ExecuteScalar() <= 0)
    {
        Log("Database '" + appSettings.DatabaseConnection.database[i].Value + "' was not found. Service shutting down.", true);
        //TODO - throw a more specific exception!
        throw new Exception("Database '" + appSettings.DatabaseConnection.database[i].Value + "' was not found. Service shutting down.");
    }
}

抛出数据库未找到异常

最接近的匹配将是

  • System.Configuration.ConfigurationErrorsException
  • System.Data.DataException

由于您的情况更可能是配置错误(指定的数据库名称无效),而不是数据库错误(数据库未成功创建),第一个选项将更好。

如果你想要一个特定的异常,你应该从这些异常中派生一个,并创建你自己的自定义异常类。

由于您正在使用SqlCommand,我会使用System.Data.SqlClient.SqlException,因为这是SqlCommand会抛出的。