• 获得目标服务器中所有数据库名、表名、列名


      1       /// <summary>
      2         /// 获得目标服务器所有数据库名
      3         /// </summary>
      4         /// <param name="serverName"></param>
      5         /// <param name="userName"></param>
      6         /// <param name="password"></param>
      7         public void getDataBaseNameList(string serverName, string userName, string password)
      8         {
      9             SQLDMO.Application sqlApplication = new SQLDMO.ApplicationClass();
     10             SQLDMO.SQLServer sqlServer = new SQLDMO.SQLServerClass();
     11             
     12             sqlServer.Connect(serverName, userName, password);          // 连接服务器
     13 
     14             foreach (SQLDMO.Database databBase in sqlServer.Databases)
     15             {
     16                 if (databBase.Name != null)
     17                 {
     18                     this.DataBaseTreeView.Nodes.Add(databBase.Name);
     19 
     20                     getDataBaseTableList(serverName, userName, password, databBase.Name);
     21                 }
     22             }
     23         }
     24 
     25 
     26         /// <summary>
     27         /// 加载数据库中表
     28         /// </summary>
     29         /// <param name="serverName">服务器名</param>
     30         /// <param name="userName">用户名</param>
     31         /// <param name="password">密码</param>
     32         /// <param name="dataBaseName">数据库名</param>
     33         private void getDataBaseTableList(string serverName, string userName, string password, string dataBaseName)
     34         {
     35             SQLDMO.SQLServer Server = new SQLDMO.SQLServerClass();
     36 
     37             //连接到服务器 
     38             Server.Connect(serverName, userName, password);
     39 
     40             //对所有的数据库遍历,获得指定数据库 
     41             for (int i = 0; i < Server.Databases.Count; i++)
     42             {
     43                 //判断当前数据库是否是指定数据库 
     44                 if (Server.Databases.Item(i + 1, "dbo").Name == dataBaseName)
     45                 {
     46                     //获得指定数据库 
     47                     SQLDMO._Database db = Server.Databases.Item(i + 1, "dbo");
     48 
     49                     //获得指定数据库中的所有表 
     50                     for (int j = 0; j < db.Tables.Count; j++)
     51                     {
     52                         this.DataBaseTreeView.Nodes[i].Nodes.Add(db.Tables.Item(j + 1, "dbo").Name);
     53                     }
     54                 }
     55             }
     56         }
     57 
     58 
     59     /// <summary>
     60         /// 获得表中所有列名
     61         /// </summary>
     62         /// <param name="serverName">服务器名</param>
     63         /// <param name="userName">用户名</param>
     64         /// <param name="password">密码</param>
     65         /// <param name="tableName">表名</param>
     66         /// <param name="dataBaseName">数据库名</param>
     67         /// <returns></returns>
     68         public string getRowListFromTable(string serverName, string userName, string password, string tableName, string dataBaseName)
     69         {
     70             string result = string.Empty;
     71 
     72             string connectionString = string.Empty;
     73             connectionString += "server=" + serverName;
     74             connectionString += ";Pwd=" + password;
     75             connectionString += ";UID=" + userName;
     76             connectionString += ";Database=" + dataBaseName;
     77 
     78             string commandString = string.Empty;
     79             commandString += "select   name   from   syscolumns   where   id=object_id('";
     80             commandString += tableName;
     81             commandString += "')";
     82             
     83 
     84             SqlConnection sqlConnection = new SqlConnection(connectionString);
     85             SqlCommand sqlCommand = new SqlCommand(commandString, sqlConnection);
     86 
     87             SqlDataAdapter dataAdapter = new SqlDataAdapter(commandString, sqlConnection);
     88 
     89             DataSet dataSet = new DataSet();
     90             dataAdapter.Fill(dataSet);
     91 
     92             DataTable dataTable = dataSet.Tables[0];
     93 
     94             // DataTable dataTable = sqlConnection.GetSchema("Tables");
     95             foreach (DataRow row in dataTable.Rows)
     96             {
     97                 result += row[0].ToString() + "-";
     98             }
     99 
    100             if (result != null)
    101             {
    102                 return result;  
    103             }
    104             else
    105             {
    106                 return "0";
    107             }
    108         }

     下面是转载的代码:

           using System.Data.SqlClient;
    
            /// <summary>
            /// 获取局域网内的所有数据库服务器名称
            /// </summary>
            /// <returns>服务器名称数组</returns>
            public List<string> GetSqlServerNames()
            {
                DataTable dataSources = SqlClientFactory.Instance.CreateDataSourceEnumerator().GetDataSources();
    
                DataColumn column = dataSources.Columns["InstanceName"];
                DataColumn column2 = dataSources.Columns["ServerName"];
    
                DataRowCollection rows = dataSources.Rows;
                List<string> Serverlist = new List<string>();
                string array = string.Empty;
                for (int i = 0; i < rows.Count; i++)
                {
                    string str2 = rows[i][column2] as string;
                    string str = rows[i][column] as string;
                    if (((str == null) || (str.Length == 0)) || ("MSSQLSERVER" == str))
                    {
                        array = str2;
                    }
                    else
                    {
                        array = str2 + @"/" + str;
                    }
    
                    Serverlist.Add(array);
                }
    
                Serverlist.Sort();
    
                return Serverlist;
            }
    
            /// <summary>
            /// 查询sql中的非系统库
            /// </summary>
            /// <param name="connection"></param>
            /// <returns></returns>
            public List<string> databaseList(string connection)
            {
                List<string> getCataList = new List<string>();
                string cmdStirng = "select name from sys.databases where database_id > 4";
                SqlConnection connect = new SqlConnection(connection);
                SqlCommand cmd = new SqlCommand(cmdStirng, connect);
                try
                {
                    if (connect.State == ConnectionState.Closed)
                    {
                        connect.Open();
                        IDataReader dr = cmd.ExecuteReader();
                        getCataList.Clear();
                        while (dr.Read())
                        {
                            getCataList.Add(dr["name"].ToString());
                        }
                        dr.Close();
                    }
    
                }
                catch (SqlException e)
                {
                    //MessageBox.Show(e.Message);
                }
                finally
                {
                    if (connect != null && connect.State == ConnectionState.Open)
                    {
                        connect.Dispose();
                    }
                }
                return getCataList;
            }
    
            /// <summary>
            /// 获取列名
            /// </summary>
            /// <param name="connection"></param>
            /// <returns></returns>
            public List<string> GetTables(string connection)
            {
                List<string> tablelist = new List<string>();
                SqlConnection objConnetion = new SqlConnection(connection);
                try
                {
                    if (objConnetion.State == ConnectionState.Closed)
                    {
                        objConnetion.Open();
                        DataTable objTable = objConnetion.GetSchema("Tables");
                        foreach (DataRow row in objTable.Rows)
                        {
                            tablelist.Add(row[2].ToString());
                        }
                    }
                }
                catch
                {
    
                }
                finally
                {
                    if (objConnetion != null && objConnetion.State == ConnectionState.Closed)
                    {
                        objConnetion.Dispose();
                    }
    
                }
                return tablelist;
            }
    
            /// <summary>
            /// 获取字段
            /// </summary>
            /// <param name="connection"></param>
            /// <param name="TableName"></param>
            /// <returns></returns>
            public List<string> GetColumnField(string connection, string TableName)
            {
                List<string> Columnlist = new List<string>();
                SqlConnection objConnetion = new SqlConnection(connection);
                try
                {
                    if (objConnetion.State == ConnectionState.Closed)
                    {
                        objConnetion.Open();
                    }
    
                    SqlCommand cmd = new SqlCommand("Select Name FROM SysColumns Where id=Object_Id('" + TableName + "')", objConnetion);
                    SqlDataReader objReader = cmd.ExecuteReader();
    
                    while (objReader.Read())
                    {
                        Columnlist.Add(objReader[0].ToString());
    
                    }
                }
                catch
                {
    
                }
                objConnetion.Close();
                return Columnlist;
            }
    

      2:

    region   得到所有本地网络中可使用的SQL服务器列表 
    ///   <summary> 
    ///   得到所有本地网络中可使用的SQL服务器列表 
    ///   </summary> 
    ///   <param   name= "p_strServerList "> 服务器列表 </param> 
    ///   <returns> </returns> 
    public   static   bool   GetServers(ref   string   []   p_strServerList) 
    { 
           try 
          { 
                SQLDMO.Application   sqlApp   =   new   SQLDMO.ApplicationClass();   
                SQLDMO.NameList   sqlServers   =   sqlApp.ListAvailableSQLServers();   
                if(sqlServers.Count   >   0) 
                { 
                     p_strServerList   =   new   string[sqlServers.Count]; 
                     for(int   i=0;i <sqlServers.Count;i++)   
                    {   
                        string   srv   =   sqlServers.Item(i   +   1);   
                        if(srv   !=   null)   
                       {   
                           p_strServerList[i]   =   srv;                                                   
                       }   
                   }   
               } 
              return   true; 
         } 
         catch(Exception   ex) 
         { 
              throw   ex; 
         } 
    } 
    
    #endregion 
    
    #region   得到指定SQL服务器所有数据库的列表 
    ///   <summary> 
    ///   得到指定SQL服务器所有数据库的列表 
    ///   </summary> 
    ///   <param   name= "p_strDataBaseList "> 数据库列表 </param> 
    ///   <param   name= "p_strServer "> 服务器名 </param> 
    ///   <param   name= "p_strUser "> 用户名 </param> 
    ///   <param   name= "p_strPWD "> 密码 </param> 
    ///   <returns> </returns> 
    public   static   bool   GetDataBases(ref   string   []   p_strDataBaseList,   string   p_strServer,   string   p_strUser,   string   p_strPWD) 
    { 
          try 
         { 
              int   i   =   0; 
    
              SQLDMO.Application   sqlApp   =   new   SQLDMO.ApplicationClass();   
              SQLDMO.SQLServer   srv   =   new   SQLDMO.SQLServerClass();                                   
              srv.Connect(p_strServer,p_strUser,p_strPWD);   
    
              if(srv.Databases.Count   >   0) 
             { 
                 p_strDataBaseList   =   new   string[srv.Databases.Count]; 
    
                 foreach(SQLDMO.Database   db   in   srv.Databases)   
                {   
                     if(db.Name!=null)   
                    { 
                         p_strDataBaseList[i]   =   db.Name; 
                    } 
                    i   =   i   +   1; 
               } 
            } 
            return   true; 
       } 
       catch(Exception   ex) 
       { 
             throw   ex; 
        } 
    } 
    
    #endregion 
    
    #region   得到所有的存储过程 
    ///   <summary> 
    ///   得到所有的存储过程 
    ///   </summary> 
    ///   <param   name= "p_strProcedureList "> 存储过程列表 </param> 
    ///   <param   name= "p_strServer "> 服务器名 </param> 
    ///   <param   name= "p_strUser "> 用户名 </param> 
    ///   <param   name= "p_strPWD "> 密码 </param> 
    ///   <param   name= "p_strDataBase "> 数据库名 </param> 
    ///   <returns> </returns> 
    public   static   bool   GetProcedures(ref   string   []   p_strProcedureList,   string   p_strServer,   string   p_strUser,   string   p_strPWD,   string   p_strDataBase) 
    { 
           try 
          { 
                SQLDMO.SQLServer   srv   =   new   SQLDMO.SQLServerClass();                                   
                srv.Connect(p_strServer,p_strUser,p_strPWD);   
    
                for(int   i=0;i <srv.Databases.Count;i++)   
               {   
                    if(srv.Databases.Item(i+1, "dbo ").Name   ==   p_strDataBase)   
                    {   
                         SQLDMO._Database   db=   srv.Databases.Item(i+1, "dbo ");   
                         if   (db.StoredProcedures.Count   >   0) 
                        { 
                             p_strProcedureList   =   new   string[db.StoredProcedures.Count]; 
    
                             for(int   j=0;j <db.StoredProcedures.Count;j++)   
                             {   
                                 p_strProcedureList[j]   =   db.StoredProcedures.Item(j+1, "dbo ").Name;   
                             }   
                             break;   
                        }   
                  } 
             } 
    
            return   true; 
       } 
       catch(Exception   ex) 
       { 
            throw   ex; 
        } 
    } 
    #endregion 
    
    #region   得到所有的Tables集合 
    ///   <summary> 
    ///   得到所有的Tables集合 
    ///   </summary> 
    ///   <param   name= "p_strProcedureList "> Tables集合 </param> 
    ///   <param   name= "p_strServer "> 服务器名 </param> 
    ///   <param   name= "p_strUser "> 用户名 </param> 
    ///   <param   name= "p_strPWD "> 密码 </param> 
    ///   <param   name= "p_strDataBase "> 数据库名 </param> 
    ///   <returns> </returns> 
    public   static   bool   GetTables(ref   string   []   p_strTableList,   string   p_strServer,   string   p_strUser,   string   p_strPWD,   string   p_strDataBase) 
    { 
          try 
          { 
                SQLDMO.SQLServer   srv   =   new   SQLDMO.SQLServerClass();                                   
                srv.Connect(p_strServer,p_strUser,p_strPWD);   
    
                for(int   i=0;i <srv.Databases.Count;i++)   
                {   
                     if(srv.Databases.Item(i+1, "dbo ").Name   ==   p_strDataBase)   
                     {   
                          SQLDMO._Database   db=   srv.Databases.Item(i+1, "dbo ");   
                          if   (db.Tables.Count   >   0) 
                          { 
                               p_strTableList   =   new   string[db.Tables.Count]; 
    
                               for(int   j=0;j <db.Tables.Count;j++)   
                              {   
                                   p_strTableList[j]   =   db.Tables.Item(j+1, "dbo ").Name;   
                              }   
                              break;   
                         }   
                   } 
             } 
    
             return   true; 
         } 
         catch(Exception   ex) 
         { 
             throw   ex; 
         } 
    } 
    #endregion 
    
    #region   得到所有的Views集合 
    ///   <summary> 
    ///   得到所有的Views集合 
    ///   </summary> 
    ///   <param   name= "p_strProcedureList "> Views集合 </param> 
    ///   <param   name= "p_strServer "> 服务器名 </param> 
    ///   <param   name= "p_strUser "> 用户名 </param> 
    ///   <param   name= "p_strPWD "> 密码 </param> 
    ///   <param   name= "p_strDataBase "> 数据库名 </param> 
    ///   <returns> </returns> 
    public   static   bool   GetViews(ref   string   []   p_strViewList,   string   p_strServer,   string   p_strUser,   string   p_strPWD,   string   p_strDataBase) 
    { 
         try 
         { 
              SQLDMO.SQLServer   srv   =   new   SQLDMO.SQLServerClass();                                   
              srv.Connect(p_strServer,p_strUser,p_strPWD);   
    
              for(int   i=0;i <srv.Databases.Count;i++)   
             {   
                  if(srv.Databases.Item(i+1, "dbo ").Name   ==   p_strDataBase)   
                  {   
                       SQLDMO._Database   db=   srv.Databases.Item(i+1, "dbo ");   
                       if   (db.Views.Count   >   0) 
                       { 
                            p_strViewList   =   new   string[db.Views.Count]; 
    
                            for(int   j=0;j <db.Views.Count;j++)   
                            {   
                                 p_strViewList[j]   =   db.Views.Item(j+1, "dbo ").Name;   
                            }   
                            break;   
                      }   
               } 
          } 
    
          return   true; 
       } 
       catch(Exception   ex) 
       { 
            throw   ex; 
        } 
    } 
    #endregion
    

      

  • 相关阅读:
    opencv ellipse
    Spring.NET实用技巧4——NHibernate分布式事务(下)
    Spring.NET企业架构实践之 Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(二)——领域模型
    Spring.NET实用技巧3——NHibernate分布式事务(上)
    Spring.NET企业架构实践之 NHibernate + Spring.NET + WCF + Windows服务 + Silverlight 中小企业应用架构完整Demo
    关于nunit调试VS2010中的4.0程序集的问题
    Spring.NET企业架构实践之 Nhibernate + WCF + ASP.NET MVC + NVelocity 对PetShop4.0重构(三)——持久层
    Spring.NET实用技巧5——WCF环境下的NHibernate分布式事务
    有多少可爱IT精英,他们的爱情屡屡“挨踢”
    Spring.NET 1.3.1 正式版已发布
  • 原文地址:https://www.cnblogs.com/iwenr/p/3715630.html
Copyright © 2020-2023  润新知