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

代码如下:

      /// <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)

相关推荐

  • mysql自动定时备份数据库的最佳方法(windows服务器)

    网上有很多关于window下Mysql自动备份的方法,可是真的能用的也没有几个,有些说的还非常的复杂,难以操作. 我们都知道mssql本身就自带了计划任务可以用来自动备份,可是mysql咱们要怎么样自动有备份呢? 教大家一个最简单的方法. 这个方法是用bat批处理来完成的. 假想环境:MySQL 安装位置:D:\Program Files\MySQL\MySQL Server 5.0\data 如图: 数据库名称为:952game数据库备份目的地:d:\db_bak\ (你想把数据库备份到哪个盘

  • 理解web服务器和数据库的负载均衡以及反向代理

    但是若该网站平均每秒的请求是200多次,那么问题就来了:这已经是最好的web服务器了,我该怎么办?同样的情景也适用于数据库.要解决这种问题,就需要了解"负载均衡"的原理了. web服务器如何做负载均衡 为web服务器做负载均衡适用的的较多的方式是DNS重定向和反向代理,其他的方式原理也是很类似. 我们多次ping一下百度,会发现回复的IP会有所不同,例如第一次的结果为: 复制代码 代码如下: 正在 Ping baidu.com [220.181.111.86] 具有 32 字节的数据:

  • 在Tomcat服务器下使用连接池连接Oracle数据库

    下面介绍在Tomcat服务器下使用连接池来连接数据库的操作 一:修改web.xml文件: 复制代码 代码如下: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:

  • SQLSERVER简单创建DBLINK操作远程服务器数据库的方法

    本文实例讲述了SQLSERVER简单创建DBLINK操作远程服务器数据库的方法.分享给大家供大家参考,具体如下: --配置SQLSERVER数据库的DBLINK exec sp_addlinkedserver @server='WAS_SMS',@srvproduct='',@provider='SQLOLEDB',@datasrc='10.131.20.100' exec sp_addlinkedsrvlogin 'WAS_SMS','false', NULL,'CustomSMS','Sql

  • 数据库服务器构建和部署检查列表详解

    前言 我们可能经常安装和部署数据库服务器,但是可能突然忘记了某个设置,为后来的运维造成隐患.下面是国外大牛整理的的检查列表. 其实也包含了很多我们平时数据库配置的最佳实践.比如TEMPDB 文件的个数,比如数据库文件,日志文件如何存放,最大内存的设置等等.如果有补充的欢迎留言 正文 1. 机架和电缆服务器 确保每个电源插入不同的电源电路 果可能,请确保网络电缆已插入不同的网络交换机 2.SQL Server服务和SQL Server代理服务的使用域帐户. 在SQL Server 2012安装期间

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

    复制代码 代码如下: /// <summary>        /// 获得目标服务器所有数据库名        /// </summary>        /// <param name="serverName"></param>        /// <param name="userName"></param>        /// <param name="passwor

  • Navicat Premium15连接云服务器中的数据库问题及遇到坑

    使用云服务器时,我们有时会连接数据库,但在使用Navicat Premium15来连接时,总会遇到报错. 常规连接方式,以腾讯云服务器中的MySQL5.6.50版本来介绍. 常规链接: 以上填写好后,点击测试连接,此时会报错,报错如图: 无法连接!如此,在腾讯云服务器中修改安全组规则,入站及出站规则均需改动. 点击完成后,再进行出站规则的调配,同入站规则,不再讲解. 以上操作完毕后,回到Navicat Premium15中进行配置,依然报错(2003-Can't connect to MySQL

  • python 获取sqlite3数据库的表名和表字段名的实例

    Python中对sqlite3数据库进行操作时,经常需要用到字段名,然而对于sqlite使用select语句并不能象MySql等数据库一样返回带字段名的字典数据集.特别是对于一个不熟悉的sqlite数据库,写代码时如果需要借助工具查看,那其实是有点对不起python的. 下面两段代码就可以轻易获得一个sqlite数据库中所有数据表名和字段名的列表: # python 获取sqlite3数据库mydb.db中的表名和表字段名 import sqlite3 conn=sqlite3.connect(

  • vue中使用element-ui进行表单验证的实例代码

    element-ui 中验证 一.简单逻辑验证(直接使用rules) 实现思路 •html中给el-form增加 :rules="rules" •html中在el-form-item 中增加属性 prop="名称" •js中直接在data中定义rules:{} •html部分 <el-form ref="form" :rules="rules" :model="form" label-width=&q

  • pandas实现excel中的数据透视表和Vlookup函数功能代码

    在孩子王实习中做的一个小工作,方便整理数据. 目前这几行代码是实现了一个数据透视表和匹配的功能,但是将做好的结果写入了不同的excel中, 如何实现将结果连续保存到同一个Excel的同一个工作表中? 还需要探索. import pandas as pd import numpy as np a = [1601,1602,1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1701,1702,1703,1704] for i in a: b = st

  • 使用geotools导入shp文件到Oracle数据库时表名带下划线问题的解决方法

    问题: 最近在做利用geotools导入shp文件到Oracle表中,发现一个问题Oracle表名带下划线时导入失败,问题代码行: dsOracle.getFeatureWriterAppend(oracleTable, Transaction.AUTO_COMMIT); dsOracle为org.geotools.data.DataStore类型对象 解决方案: 网上查阅资料发现是Oracle11的java包ojdbc的版本问题,maven中搜索ojdbc发现最新版如下图 pom配置: <!-

  • 库名表名大小写问题与sqlserver兼容的启动配置方法

    将全局变量 lower_case_table_names 设置为1 实验: 1.lower_case_tables_name=0的情况(Linux默认) 直接启动mysql,在mytest库中新建表MyTable和mytable mysql> use mytest; mysql> create table MyTable(id int not null,name varchar(10),dt date); mysql> create table mytable(id int not nu

  • jquery中通过过滤器获取表单元素的实现代码

    :enable 获取可输入状态的元素 :disabled 获取不可输入状态的元素 :checked 获取选中的表单元素 :seleced 获取下拉框中选中的元素 下面看一粒例子 Html 复制代码 代码如下: <body> <form id="form1" runat="server"> <div> <ul> <li><label>订单号码:</label><input typ

  • 教你如何在windows与linux系统中设置MySQL数据库名、表名大小写敏感

    在 MySQL 中,数据库和表其实就是数据目录下的目录和文. 因而,操作系统的敏感性决定数据库和表命名的大小写敏感.这就意味着数据库和表名在 Windows 中是大小写不敏感的,而在大多数类型的 Unix/Linux 系统中是大小写敏感的. MySQL大小写敏感可以通过配置文件的lower_case_table_names参数来控制. WINDOWS: 编辑MySQL安装目录下的my.ini 文件,在[mysqld]节下 添加 lower_case_table_names=0 (备注:为0时大小

  • Windows服务器下MySql数据库单向主从备份详细实现步骤分享

    一.目的:将主服务器中的MySql数据库同步到从服务器中,使得对主服务器的操作可以即时更新到从服务器,避免主服务器因环境或者网络异常一时无法使用,达到备份效果. 二.环境: 主从服务器操作系统.数据库版本均相同,具体如下: 操作系统:Windows 2003 Server R2 MySql数据库版本:5.0.51b 主服务器(用A代替)IP地址:192.168.4.100 从服务器(用B代替)IP地址:192.168.4.101 三.配置过程: 1.在A创建远程访问备份账户. 在A的MySql数

随机推荐