这是我的代码:
OdbcConnection odbcConn = new OdbcConnection("DSN=VIP_Company355");
try
{
odbcConn.Open();
int pleaseReachMe = 5;
}
catch (Exception ex)
{
}
调试器到达时
odbcConn.Open();
它不会返回,也不会抛出异常。文档说默认超时是15秒。但是经过15秒后,没有异常被抛出。 此外,如果我用无意义的值替换我的连接字符串,它会立即引发错误。
有什么想法吗?
编辑:
我启用了ODBC数据源管理员的跟踪,并在日志文件中留下了以下内容:
parentProcessId 1518-2754 ENTER SQLDriverConnectW
HDBC 0x005BF570
HWND 0x00000000
WCHAR * 0x63118B34 [ -3] "******\ 0"
SWORD -3
WCHAR * 0x63118B34
SWORD -3
SWORD * 0x00000000
UWORD 0 <SQL_DRIVER_NOPROMPT>
(为简洁起见,仅包括最后一条陈述) 它进入了SQLDriverConnectW过程,但它从未存在过。
答案 0 :(得分:0)
尝试在类的最低层使用几个变量。
即,制作string connString = "DSN=VIP_Company355"
OdbcConnection conn = new OdbcConnection(connString);
然后使用:conn.Open();
即
public void SomeFunction()
{
string connString = "DSN=VIP_Company355";
if (OpenConnection(connString))
{
MessageBox.Show("Connection Established");
}
}
public bool OpenConnection(string connString);
{
try
{
OdbcConnection conn = new OdbcConnection(connString);
conn.Open();
return true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message());
return false;
}
}
编辑:
语法和东西。关于将这些变量放在类顶部的注释。这没有必要,但是如果你发现你正在重用你的连接字符串或你的OdbcConnection,那么它们可能值得制作它们的常数,但这完全取决于你。
答案 1 :(得分:-1)
int pleaseReachMe = 5;
是一个没有用的局部变量,因此调试器断点不会命中,可能becoz该行将被编译器删除。
Visual Studio Debugger doesnt step into unused variable declarations