c#获得目标服务器中所有数据库名、表名、列名的实现代码

时间:2024-01-25 11:20:48 


/// <summary>
        /// 获得目标服务器所有数据库名
        /// </summary>
        /// <param name="serverName"></param>
        /// <param name="userName"></param>
        /// <param name="password"></param>
        public void getDataBaseNameList(string serverName, string userName, string password)
        {
            SQLDMO.Application sqlApplication = new SQLDMO.ApplicationClass();
            SQLDMO.SQLServer sqlServer = new SQLDMO.SQLServerClass();

            sqlServer.Connect(serverName, userName, password);          // 连接服务器

            foreach (SQLDMO.Database databBase in sqlServer.Databases)
            {
                if (databBase.Name != null)
                {
                    this.DataBaseTreeView.Nodes.Add(databBase.Name);

                    getDataBaseTableList(serverName, userName, password, databBase.Name);
                }
            }
        }


        /// <summary>
        /// 加载数据库中表
        /// </summary>
        /// <param name="serverName">服务器名</param>
        /// <param name="userName">用户名</param>
        /// <param name="password">密码</param>
        /// <param name="dataBaseName">数据库名</param>
        private void getDataBaseTableList(string serverName, string userName, string password, string dataBaseName)
        {
            SQLDMO.SQLServer Server = new SQLDMO.SQLServerClass();

            //连接到服务器
            Server.Connect(serverName, userName, password);

            //对所有的数据库遍历,获得指定数据库
            for (int i = 0; i < Server.Databases.Count; i++)
            {
                //判断当前数据库是否是指定数据库
                if (Server.Databases.Item(i + 1, "dbo").Name == dataBaseName)
                {
                    //获得指定数据库
                    SQLDMO._Database db = Server.Databases.Item(i + 1, "dbo");

                    //获得指定数据库中的所有表
                    for (int j = 0; j < db.Tables.Count; j++)
                    {
                        this.DataBaseTreeView.Nodes[i].Nodes.Add(db.Tables.Item(j + 1, "dbo").Name);
                    }
                }
            }
        }


    /// <summary>
        /// 获得表中所有列名
        /// </summary>
        /// <param name="serverName">服务器名</param>
        /// <param name="userName">用户名</param>
        /// <param name="password">密码</param>
        /// <param name="tableName">表名</param>
        /// <param name="dataBaseName">数据库名</param>
        /// <returns></returns>
        public string getRowListFromTable(string serverName, string userName, string password, string tableName, string dataBaseName)
        {
            string result = string.Empty;

            string connectionString = string.Empty;
            connectionString += "server=" + serverName;
            connectionString += ";Pwd=" + password;
            connectionString += ";UID=" + userName;
            connectionString += ";Database=" + dataBaseName;

            string commandString = string.Empty;
            commandString += "select   name   from   syscolumns   where   id=object_id('";
            commandString += tableName;
            commandString += "')";
           

            SqlConnection sqlConnection = new SqlConnection(connectionString);
            SqlCommand sqlCommand = new SqlCommand(commandString, sqlConnection);

            SqlDataAdapter dataAdapter = new SqlDataAdapter(commandString, sqlConnection);

            DataSet dataSet = new DataSet();
            dataAdapter.Fill(dataSet);

            DataTable dataTable = dataSet.Tables[0];

            // DataTable dataTable = sqlConnection.GetSchema("Tables");
            foreach (DataRow row in dataTable.Rows)
            {
                result += row[0].ToString() + "-";
            }

            if (result != null)
            {
                return result; 
            }
            else
            {
                return "0";
            }
        }

标签:数据库名,表名,列名
0
投稿

猜你喜欢

  • 基于Python正确读取资源文件

    2022-04-10 11:34:18
  • 详解Mysql中的视图

    2024-01-22 09:16:00
  • Python数据结构之图的应用示例

    2021-06-02 21:59:27
  • Python3 Tkinkter + SQLite实现登录和注册界面

    2023-10-01 14:56:15
  • WinHTTP Services 5.1 参考资料

    2010-03-27 20:49:00
  • MySQL下载安装配置详细教程 附下载资源

    2024-01-29 10:15:41
  • Python图片处理之图片裁剪教程

    2022-02-02 06:32:40
  • Python3 中文文件读写方法

    2021-07-14 20:02:39
  • python微信跳一跳系列之棋子定位像素遍历

    2023-11-04 01:27:47
  • 常用Oracle分析函数大全

    2023-07-03 08:16:14
  • 浅谈pandas用groupby后对层级索引levels的处理方法

    2022-10-15 01:43:37
  • Python内建模块struct实例详解

    2022-07-06 02:10:18
  • 详解小程序循环require之坑

    2024-02-24 03:38:29
  • Python3单行定义多个变量或赋值方法

    2022-03-22 17:10:53
  • vue项目中data数据之间互相访问的实现

    2024-05-28 15:51:43
  • MySQL的数据库数据备份和恢复详解

    2012-01-29 18:19:07
  • python 代码实现k-means聚类分析的思路(不使用现成聚类库)

    2021-05-28 06:30:24
  • 详解用Python调用百度地图正/逆地理编码API

    2021-06-01 16:35:39
  • python 监听salt job状态,并任务数据推送到redis中的方法

    2022-09-14 05:19:47
  • Go语言下载网络图片或文件的方法示例

    2024-02-13 17:20:52
  • asp之家 网络编程 m.aspxhome.com