想用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实现呢
...全文
82 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
学习

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧