gpt4 book ai didi

c# - Try-Catch 和 "Continue"- 这可能吗?

转载 作者:太空狗 更新时间:2023-10-29 22:12:50 24 4
gpt4 key购买 nike

我的代码中有一个部分用于查询我网络上的所有 SQL Server 数据库。我首先尝试使用 SQL 登录名访问 SQL Server 实例,但如果失败,那么我想尝试使用我的 Windows 凭据进行连接。之后,如果我仍然无法连接,那么我希望代码失败,然后通知用户。

所以我想我要问的是如何从 Try-Catch block 内部循环回到 Try-Catch block 上方的行:

String conxString = @"Data Source=SQLInstance1;User ID=FOO;Password=BAR;";
bool secondTime = false;

using (SqlConnection sqlConx = new SqlConnection(conxString))
{
Try{
sqlConx.Open();
DataTable tblDatabases = sqlConx.GetSchema("Databases");
sqlConx.Close();
secondTime = false;
Console.WriteLine("SQL Server found!");
}
Catch(System.Data.SqlClient.SqlException e){
if (!secondTime){
secondTime = true;
conxString = @"Data Source=SQLInstance1; Integrated Security=True;";
//Loop back to the using statement to try again with Windows Creds
{
else{
Console.WriteLine("SQL Server not found or credentials refused");
}
//Report Failure to connect to user

}
finally{
//Reset Variable
secondTime = false;
}

}

最佳答案

我可能会走这条路:

String conxString = @"Data Source=Instance1;User ID=FOO;Password=BAR;";
//in your main function
if(!TryConnect(conxString))
{
Console.WriteLine("SQL Creditials failed. Trying with windows credentials...");
conxString = "new conn string";
TryConnect(conxString);
}
..............
//new function outside of your main function
private bool TryConnect(string connString)
{
using (SqlConnection sqlConx = new SqlConnection(conxString))
{
Try{
sqlConx.Open();
DataTable tblDatabases = sqlConx.GetSchema("Databases");
sqlConx.Close();
}
Catch(System.Data.SqlClient.SqlException e){
return false;
}
return true;
}
}

关于c# - Try-Catch 和 "Continue"- 这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6146248/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com