想用Java做获取局域网内所有SQL服务器列表的功能,不知能否实现

myelan 2003-10-23 02:07:45
我找到一片相似的文章
“想用VB做获取局域网内所有SQL服务器列表的功能,不知能否实现”在FAQ里面

Q : 想用VB做获取局域网内所有SQL服务器列表的功能,不知能否实现?
主要解答者: pengdali 提交人: lcx_csdn
感谢: fengzeng、caiyunxia、pengdali、pengdali
审核者: tjan 论坛对应贴子: 查看
A :


运行:osql -L --参数必须大写

VB:
function TFormDataSet.GetSQLServer(ComboBox: TComboBox): Boolean;
var
SQLServer: Variant;
ServerList: Variant;
i, nServers: integer;
sRetValue: string;
begin
ComboBox.Items.Clear;
Result := False;
try
Screen.Cursor := crHourGlass;
SQLServer := CreateOleObject('SQLDMO.Application');
ServerList := SQLServer.ListAvailableSQLServers;
nServers := ServerList.Count;
for i := 1 to nServers do
ComboBox.Items.Add(ServerList.Item(i));
SQLServer := NULL;
ServerList := NULL;
Result := True;
cbSQLServer.Style := csDropDownList;
except
end;
Screen.Cursor := crDefault;
end;

c++得到:
Variant SQLServer;
Variant ServerList;
int i,nServers;
String sRetValue;
try
{
SQLServer = CreateOleObject("SQLDMO.Application");
}
catch(...)
{
ShowMessage("需要SQL Server客户端软件支持...");
return;
}

ServerList= SQLServer.OleFunction("ListAvailableSQLServers");
nServers=ServerList.OlePropertyGet("Count");
for(i=1;i<=nServers;i++)
ValueListEditor1->InsertRow( IntToStr(i), ServerList.OleFunction("Item", i), 1);
SQLServer=Unassigned;
ServerList=Unassigned;



请教各位能不能java实现呢
...全文
23 点赞 收藏 13
写回复
13 条回复
myelan 2003年10月26日
to 双规干部
对你提供的资料非常感谢





回复 点赞
playyuer 2003年10月24日
大力的方法肯定要先连一个 SQL Server!

java.lang.Process 类去调用忙行命令行 'OSQL -L' 截获标准输出!
分析字符串!
应该没问题!
回复 点赞
elanmiao 2003年10月24日
to 大力
还有,如果我要找到局域网内所有oracle服务器的列表呢?
可以么?
回复 点赞
elanmiao 2003年10月24日
这个帐号也是我的,不知道为什么myelan的账号不能回复该贴了

我还有个想法,不知道是否可行

我是不是可以直接向局域网内的机器的服务器端口(包括SQL Server和Oracle的)发消息
然后这些机器,如果有数据库服务进程的将会回复消息,而回复的消息包括数据库名称等信息

自己存在几点疑问,包括SQL Server和Oracle的端口是哪个?
自己发送请求消息的内容是什么?
回复内容是什么样的?

问题问多了,希望不要烦
如果分数不够,可以加

回复 点赞
myelan 2003年10月24日
to 大力
我试试看

回复 点赞
myelan 2003年10月24日
to 思归
thanks, 但是思归的思路不容易
如果要调用,为什么不直接用c写下一个程序
将局域网内所有服务器的列表输出到文件
然后,由java主程序读取显示呢!
回复 点赞
myelan 2003年10月24日
to
lynx1111(任我行:曾率三千菜鸟夜袭珍珠港--被俘)


你给的文章是
怎样在JAVA里实现获取指定服务器上所有可用数据库的列表??

不是我问的问题
回复 点赞
playyuer 2003年10月24日
http://www.javaresearch.org/article/showarticle.jsp?column=1&thread=196
回复 点赞
playyuer 2003年10月24日
import java.io.*;
import java.util.ArrayList;

public class ExecDemo {
static public String[] runCommand(String cmd)
throws IOException {

// set up list to capture command output lines

ArrayList list = new ArrayList();

// start command running

Process proc = Runtime.getRuntime().exec(cmd);
/**译者注:前面的声明应该改成java.lang.Process,即:
java.lang.Process proc = Runtime.getRuntime().exec(cmd);
如果不改的话可能编译不同通过,在译者的机器上使用jdk1.2,编译出现5个错误
使用jdk1.4编译出现4个错误
*/
// get command's output stream and
// put a buffered reader input stream on it

InputStream istr = proc.getInputStream();
BufferedReader br =
new BufferedReader(new InputStreamReader(istr));

// read output lines from command

String str;
while ((str = br.readLine()) != null)
list.add(str);

// wait for command to terminate

try {
proc.waitFor();
}
catch (InterruptedException e) {
System.err.println("process was interrupted");
}

// check its exit value

if (proc.exitValue() != 0)
System.err.println("exit value was non-zero");

// close stream

br.close();

// return list of strings to caller

return (String[])list.toArray(new String[0]);
}

public static void main(String args[]) throws IOException {
try {

// run a command

String outlist[] = runCommand("osql -L");

// display its output

for (int i = 0; i < outlist.length; i++)
System.out.println(outlist[i]);
}
catch (IOException e) {
System.err.println(e);
}
}
}
回复 点赞
saucer 2003年10月23日
Java doesn't have native support to list sql servers on your LAN, you have to rely on SQLDMO.Application object, but first you have to use a COM-Java bridge to do that, for example, see

http://www.ezjcom.com/google.html
回复 点赞
pengdali 2003年10月23日
用java调用这个过程:


create proc xx
as
SET NOCOUNT ON
EXEC MASTER..XP_CMDSHELL 'OSQL -L'
go
回复 点赞
lynx1111 2003年10月23日
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=34543
回复 点赞
lvltt 2003年10月23日
学习
回复 点赞
发动态
发帖子
应用实例
创建于2007-09-28

1.1w+

社区成员

6.8w+

社区内容

MS-SQL Server 应用实例
社区公告
暂无公告