zoukankan
html css js c++ java
获取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;
}
}
}
查看全文
相关阅读:
洛谷P3569 [POI2014]KAR-Cards(线段树)
洛谷P3295 [SCOI2016]萌萌哒(倍增+并查集)
GFS分布式文件系统脚本
源码安装apache脚本
python如何安装cv2
从npz文件中读取图片并显示的小例子
读取npz,并显示图像
Python中.npz文件的读取
导出MNIST的数据集
Keras下载的数据集以及预训练模型保存在哪里
原文地址:https://www.cnblogs.com/gwazy/p/111127.html
最新文章
Luogu P1248 加工生产调度
Luogu P1650 田忌赛马
栅栏(fence)
NOI 2010 超级钢琴
NOI2006 郁闷的出纳员
计蒜客NOIP模拟赛(3) D1T2 信息传递
计蒜客NOIP模拟赛(2)D1T3 深黑幻想
计蒜客 NOIP模拟赛(3) D1T1火山喷发
[HNOI2015]菜肴制作
传染病控制
热门文章
选择客栈
计蒜客NOIP模拟赛(2) D2T3 银河战舰
bzoj3316: JC loves Mkk(单调队列+分数规划)
bzoj2131: 免费的馅饼(树状数组)
洛谷P3287 [SCOI2014]方伯伯的玉米田(树状数组)
洛谷P4303 [AHOI2006]基因匹配(树状数组)
「vijos」lxhgww的奇思妙想(长链剖分)
CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths(dsu on tree)
CF600E Lomsat gelral(dsu on tree)
洛谷P4891 序列
Copyright © 2011-2022 走看看