.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.");
}
}
答案 0 :(得分:2)
最接近的匹配是
System.Configuration.ConfigurationErrorsException
System.Data.DataException
由于您的情况更可能是配置错误(指定了无效的DB名称)而不是数据库错误(数据库未成功创建),第一个选项会更好。
如果你想要一个特定的例外,你应该从其中一个派生出来并创建你自己的自定义异常类。
答案 1 :(得分:1)
由于您使用SqlCommand,我会使用System.Data.SqlClient.SqlException,因为这是SqlCommand会抛出的内容。