日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

获取Sql服务器列表 (C#)

發布時間:2023/12/20 C# 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 获取Sql服务器列表 (C#) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
private?void?button1_Click_1(object?sender,?System.EventArgs?e)
{
?
string[]?servers?=?DBGrep.SqlLocator.GetServers();
?
foreach?(?string?s?in?servers?)
{
?
this.listBox1.Items.Add(s);
}

}

類的代碼

using?System;using?System.Text;?using?System.Windows.Forms;using?System.Runtime.InteropServices;
namespace?DBGrep
{??public?class?SqlLocator
{??[DllImport("odbc32.dll")]??private?static?extern?short?SQLAllocHandle(short?hType,?IntPtr?inputHandle,?out?IntPtr?outputHandle);
??[DllImport(
"odbc32.dll")]
??
private?static?extern?short?SQLSetEnvAttr(IntPtr?henv,?int?attribute,?IntPtr?valuePtr,?int?strLength);
??[DllImport(
"odbc32.dll")]
?
private?static?extern?short?SQLFreeHandle(short?hType,?IntPtr?handle);?
[DllImport(
"odbc32.dll",CharSet=CharSet.Ansi)]
private?static?extern?short?SQLBrowseConnect(IntPtr?hconn,?StringBuilder?inString,?
short?inStringLength,?StringBuilder?outString,?short?outStringLength,
out?short?outLengthNeeded);

private?const?short?SQL_HANDLE_ENV?=?1;
private?const?short?SQL_HANDLE_DBC?=?2;
private?const?int?SQL_ATTR_ODBC_VERSION?=?200;
private?const?int?SQL_OV_ODBC3?=?3;
private?const?short?SQL_SUCCESS?=?0;
private?const?short?SQL_NEED_DATA?=?99;
private?const?short?DEFAULT_RESULT_SIZE?=?1024;
private?const?string?SQL_DRIVER_STR?=?"DRIVER=SQL?SERVER";
private?SqlLocator(){}
public?static?string[]?GetServers()
{
string[]?retval?=?null;
string?txt?=?string.Empty;
IntPtr?henv?
=?IntPtr.Zero;
IntPtr?hconn?
=?IntPtr.Zero;
StringBuilder?inString?
=?new?StringBuilder(SQL_DRIVER_STR);
StringBuilder?outString?
=?new?StringBuilder(DEFAULT_RESULT_SIZE);
short?inStringLength?=?(short)?inString.Length;
short?lenNeeded?=?0;
try
{
if?(SQL_SUCCESS?==?SQLAllocHandle(SQL_HANDLE_ENV,?henv,?out?henv))
{
if?(SQL_SUCCESS?==?SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(IntPtr)SQL_OV_ODBC3,0))
{
if?(SQL_SUCCESS?==?SQLAllocHandle(SQL_HANDLE_DBC,?henv,?out?hconn))
{
if?(SQL_NEED_DATA?==?SQLBrowseConnect(hconn,?inString,?inStringLength,?outString,?
DEFAULT_RESULT_SIZE,?
out?lenNeeded))
{
if?(DEFAULT_RESULT_SIZE?<?lenNeeded)
{
outString.Capacity?
=?lenNeeded;
?
if?(SQL_NEED_DATA?!=?SQLBrowseConnect(hconn,?inString,?inStringLength,?outString,?
?lenNeeded,
out?lenNeeded))
{
?
throw?new?ApplicationException("Unabled?to?aquire?SQL?Servers?from?ODBC?driver.");
}
?
?}

?txt?
=?outString.ToString();
?
int?start?=?txt.IndexOf("{")?+?1;
?
int?len?=?txt.IndexOf("}")?-?start;
?
if?((start?>?0)?&&?(len?>?0))
{
txt?
=?txt.Substring(start,len);
}

?
else
{
txt?
=?string.Empty;
}

}
?
}

}
?
}

}

catch?(Exception?ex)
{
?
//Throw?away?any?error?if?we?are?not?in?debug?mode
#if?(DEBUG)
MessageBox.Show(ex.Message,
"Acquire?SQL?Servier?List?Error");
#endif?
txt?
=?string.Empty;
}

finally
{
if?(hconn?!=?IntPtr.Zero)
{
SQLFreeHandle(SQL_HANDLE_DBC,hconn);
}

if?(henv?!=?IntPtr.Zero)
{
?SQLFreeHandle(SQL_HANDLE_ENV,hconn);
}

?}

?
if?(txt.Length?>?0)
{
?retval?
=?txt.Split(",".ToCharArray());
?}


return?retval;
}

}

}


總結

以上是生活随笔為你收集整理的获取Sql服务器列表 (C#)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。