当前位置:编程学习 > C#/ASP.NET >>

高人请进!!!!!!!!

我用的是 c# winform 想用代码获取本机的sql server 2000的服务器名称和端口号,然后显示在textbox中,  --------------------编程问答--------------------

using System;
using System.Data.Sql;
using System.Text;

namespace AllSqlServer
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("正在遍历局域网数据库实例,请稍后.....");
            SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance;
            System.Data.DataTable table = instance.GetDataSources();

            DisplayData(table);
            Console.WriteLine("遍历结束");
            Console.ReadLine();
        }

        private static void DisplayData(System.Data.DataTable table)
        {
            foreach (System.Data.DataRow row in table.Rows)
            {
                Console.WriteLine("服务器名 = {0}", row["ServerName"]);
                Console.WriteLine("实例名 = {0}", row["InstanceName"]);
                Console.WriteLine("是否是群集服务器 = {0}", row["IsClustered"]);//指示服务器是否是群集的一部分
                Console.WriteLine("版本 = {0}", row["Version"]);//8.*是SQL 2000,9.*是SQL 2005
                Console.WriteLine("============================");

            }
        }
    }
}
--------------------编程问答-------------------- 取得数据库服务器列表:  
public ArrayList GetServerList()  
{  
ArrayList alServers = new ArrayList() ;  
SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass() ;  
try  
{  
SQLDMO.NameList serverList = sqlApp.ListAvailableSQLServers() ;  
for(int i = 1;i<= serverList.Count;i++)  
{  
alServers.Add(serverList.Item(i)) ;  
}  
}  
catch(Exception e)  
{  
throw(new Exception("取数据库服务器列表出错:"+e.Message)) ;  
}  
finally  
{  
sqlApp.Quit() ;  
}  
return alServers ;  
}  


SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance;  
DataTable dt = instance.GetDataSources().DefaultView.ToTable(true,"ServerName");  
comboBox1.DisplayMember = "ServerName";  
comboBox1.DataSource = dt;

--------------------编程问答--------------------
引用 2 楼 wuyq11 的回复:
取得数据库服务器列表:  
public ArrayList GetServerList()  
{  
ArrayList alServers = new ArrayList() ;  
SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass() ;  
try  
{  
SQLDMO.NameList serverList……
学习 --------------------编程问答-------------------- 谢谢楼上的哈,还有一个就是获取端口号的问题了 --------------------编程问答--------------------
引用 4 楼 xiaojie0801 的回复:
谢谢楼上的哈,还有一个就是获取端口号的问题了



using Microsoft.Win32;

RegistryKey portkey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\MSSQLServer\\MSSQLServer\\SuperSocketNetLib\\Tcp",true);
MessageBox.Show("端口号:"+portkey.GetValue("TcpPort").ToString());
--------------------编程问答-------------------- 窗体上一个button1和一个richTextBox1,自己复制代码测试去吧呵呵


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.Sql;
using Microsoft.Win32;

namespace getsql
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance;
            System.Data.DataTable table = instance.GetDataSources();
            RegistryKey portkey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\MSSQLServer\\MSSQLServer\\SuperSocketNetLib\\Tcp",true);
            richTextBox1.Text = "端口号:" + portkey.GetValue("TcpPort").ToString()+"\r\n\r\n";
            foreach (System.Data.DataRow row in table.Rows)
            {
                richTextBox1.Text+="服务器名 = "+row["ServerName"]+"   ";
                richTextBox1.Text+="实例名 = "+row["InstanceName"]+"   ";
                richTextBox1.Text+="是否是群集服务器 = "+row["IsClustered"]+"   ";//指示服务器是否是群集的一部分
                richTextBox1.Text+="版本 = "+row["Version"]+"\r\n\r\n";//8.*是SQL 2000,9.*是SQL 2005
            }
        }
    }
}

补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,