得到数据库存储过程列表:

select * from dbo.sysobjects where OBJECTPROPERTY(id, N'IsProcedure') = 1 order by name

得到某个存储过程的参数信息:(SQL方法)

select * from syscolumns where ID in    
  (SELECT id FROM sysobjects as a  
   WHERE OBJECTPROPERTY(id, N'IsProcedure') = 1    
   and id = object_id(N'[dbo].[mystoredprocedurename]'))

得到某个存储过程的参数信息:(Ado.net方法)

SqlCommandBuilder.DeriveParameters(mysqlcommand);

得到数据库所有表:

select * from dbo.sysobjects where OBJECTPROPERTY(id, N'IsUserTable') = 1 order by name

得到某个表中的字段信息:

select c.name as ColumnName, c.colorder as ColumnOrder, c.xtype as DataType, typ.name as  DataTypeName, c.Length, c.isnullable from dbo.syscolumns c inner join dbo.sysobjects t 
on c.id = t.id 
inner join dbo.systypes typ on typ.xtype = c.xtype
where OBJECTPROPERTY(t.id, N'IsUserTable') = 1 
and t.name='mytable' order by c.colorder;

C# Ado.net代码示例:

1. 得到数据库存储过程列表:

using System.Data.SqlClient;
 
private void GetStoredProceduresList()
{
    string sql = "select * from dbo.sysobjects where OBJECTPROPERTY(id, N'IsProcedure') = 1 order by name";
    string connStr = @"Data Source=(local);Initial Catalog=mydatabase; Integrated Security=True; Connection Timeout=1;";
 
    SqlConnection conn = new SqlConnection(connStr);
    SqlCommand cmd = new SqlCommand(sql, conn);
    cmd.CommandType = CommandType.Text;
 
    try
    {
        conn.Open();
 
        using (SqlDataReader MyReader = cmd.ExecuteReader())
        {
            while (MyReader.Read())
            {
                //Get stored procedure name
                this.listBox1.Items.Add(MyReader[0].ToString());
            }
        }
    }
    finally
    {
        conn.Close();
    }
}

2. 得到某个存储过程的参数信息:(Ado.net方法)

 
using System.Data.SqlClient;
 
private void GetArguments()
{
    string connStr = @"Data Source=(local);Initial Catalog=mydatabase; Integrated Security=True; Connection Timeout=1;";
 
    SqlConnection conn = new SqlConnection(connStr);
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = conn;
    cmd.CommandText = "mystoredprocedurename";
    cmd.CommandType = CommandType.StoredProcedure;
 
    try
    {
        conn.Open();
 
        SqlCommandBuilder.DeriveParameters(cmd);
 
        foreach (SqlParameter var in cmd.Parameters)
        {
            if (cmd.Parameters.IndexOf(var) == 0) continue;//Skip return value
 
            MessageBox.Show((String.Format("Param: {0}{1}Type: {2}{1}Direction: {3}",
               var.ParameterName,
               Environment.NewLine,
               var.SqlDbType.ToString(),
               var.Direction.ToString())));
        }
    }
    finally
    {
        conn.Close();
    }
 
}

3. 列出所有数据库:

using System;
using System.Windows.Forms;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
 
private static string connString = 
            "Persist Security Info=True;timeout=5;Data Source=192.168.1.8;User ID=sa;Password=password";
 
/// <summary>
/// 列出所有数据库
/// </summary>
/// <returns></returns>
public string[] GetDatabases()
{
    return GetList("SELECT name FROM sysdatabases order by name asc");
}
 
private string[] GetList(string sql)
{
    if (String.IsNullOrEmpty(connString)) return null;
 
    string connStr = connString;
 
    SqlConnection conn = new SqlConnection(connStr);
    SqlCommand cmd = new SqlCommand(sql, conn);
    cmd.CommandType = CommandType.Text;
 
    try
    {
        conn.Open();
 
        List<string> ret = new List<string>();
 
        using (SqlDataReader MyReader = cmd.ExecuteReader())
        {
            while (MyReader.Read())
            {
                ret.Add(MyReader[0].ToString());
            }
        }
 
        if (ret.Count > 0) return ret.ToArray();
        return null;
    }
    finally
    {
        conn.Close();
    }
}
 

4. 得到Table表格列表:

private static string connString = 
  "Persist Security Info=True;timeout=5;Data Source=192.168.1.8;Initial Catalog=myDb;User ID=sa;Password=password";
 
/* select name from sysobjects where xtype='u'  ---
   C = CHECK 约束
   D = 默认值或 DEFAULT 约束
   F = FOREIGN KEY 约束
   L = 日志
   FN = 标量函数
   IF = 内嵌表函数
   P = 存储过程
   PK = PRIMARY KEY 约束(类型是 K)
   RF = 复制筛选存储过程
   S = 系统表
   TF = 表函数
   TR = 触发器
   U = 用户表
   UQ = UNIQUE 约束(类型是 K)
   V = 视图
   X = 扩展存储过程
   */
 
public string[] GetTableList()
{
    return GetList("SELECT name FROM sysobjects WHERE xtype='U' AND name   <>   'dtproperties' order by name asc");
}

5. 得到View视图列表:

public string[] GetViewList()
{
     return GetList("SELECT name FROM sysobjects WHERE xtype='V' AND name   <>   'dtproperties' order by name asc");
}

6. 得到Function函数列表:

public string[] GetFunctionList()
{
    return GetList("SELECT name FROM sysobjects WHERE xtype='FN' AND name   <>   'dtproperties' order by name asc");
}

7. 得到存储过程列表:

public string[] GetStoredProceduresList()
{
    return GetList("select * from dbo.sysobjects where OBJECTPROPERTY(id, N'IsProcedure') = 1 order by name asc");
}

8. 得到table的索引Index信息:

public TreeNode[] GetTableIndex(string tableName)
{
    if (String.IsNullOrEmpty(connString)) return null;
 
    List<TreeNode> nodes = new List<TreeNode>();
 
    string connStr = connString;
 
    SqlConnection conn = new SqlConnection(connStr);
    SqlCommand cmd = new SqlCommand(String.Format("exec sp_helpindex {0}", tableName), conn);
    cmd.CommandType = CommandType.Text;
 
    try
    {
        conn.Open();
 
        using (SqlDataReader MyReader = cmd.ExecuteReader())
        {
            while (MyReader.Read())
            {
                TreeNode node = new TreeNode(MyReader[0].ToString(), 2, 2);/*Index name*/
                node.ToolTipText = String.Format("{0}{1}{2}", MyReader[2].ToString()/*index keys*/, Environment.NewLine,
                    MyReader[1].ToString()/*Description*/);
                nodes.Add(node);
            }
        }
    }
    finally
    {
        conn.Close();
    }
 
    if(nodes.Count>0) return nodes.ToArray ();
    return null;
}

9. 得到Table,View,Function,存储过程的参数,Field信息:

public string[] GetTableFields(string tableName)
{
    return GetList(String.Format("select name from syscolumns where id =object_id('{0}')", tableName));
}

10. 得到Table各个Field的详细定义:

public TreeNode[] GetTableFieldsDefinition(string TableName)
{
    if (String.IsNullOrEmpty(connString)) return null;
 
    string connStr = connString;
 
    List<TreeNode> nodes = new List<TreeNode>();
 
    SqlConnection conn = new SqlConnection(connStr);
    SqlCommand cmd = new SqlCommand(String.Format("select a.name,b.name,a.length,a.isnullable from syscolumns a,systypes b,sysobjects d where a.xtype=b.xusertype and a.id=d.id and d.xtype='U' and a.id =object_id('{0}')",
                  TableName), conn);
    cmd.CommandType = CommandType.Text;
              
    try
    {
        conn.Open();
 
        using (SqlDataReader MyReader = cmd.ExecuteReader())
        {
            while (MyReader.Read())
            {
                TreeNode node = new TreeNode(MyReader[0].ToString(), 2, 2);
                node.ToolTipText = String.Format("Type: {0}{1}Length: {2}{1}Nullable: {3}", MyReader[1].ToString()/*type*/, Environment.NewLine,
                    MyReader[2].ToString()/*length*/, Convert.ToBoolean(MyReader[3]));
                nodes.Add(node);
            }
        }
 
        if (nodes.Count > 0) return nodes.ToArray();
        return null;
    }
    finally
    {
        conn.Close();
    }
 
}

11. 得到存储过程内容:

类似“8. 得到table的索引Index信息”,SQL语句为:EXEC Sp_HelpText '存储过程名'

12. 得到视图View定义:

类似“8. 得到table的索引Index信息”,SQL语句为:EXEC Sp_HelpText '视图名'

(以上代码可用于代码生成器,列出数据库的所有信息)

http://www.cnblogs.com/luluping/archive/2009/07/24/1530528.html

读取SQLServer数据库存储过程列表及参数信息的更多相关文章

  1. SqlServer数据库存储过程的使用

    搞开发这么久了,说实话很少用到存储过程,大部分代码都在业务层给处理了. 今天在做APP接口的时候,表里面没有数据,需要模拟一些数据,于是就想到存储过程,来一起用下吧. SqlServer中创建存储过程 ...

  2. 【WPF学习笔记】之如何设置下拉框读取SqlServer数据库的值:动画系列之(一)

    先前条件:设置好数据库,需要三个文件CommandInfo.cs.DbHelperSQL.cs.myHelper.cs,需要修改命名空间,参照之前随笔http://www.cnblogs.com/Ow ...

  3. js读取sqlserver数据库,输出至html

    代码: <!DOCTYPE html> <html> <head>   <meta charset="utf-8">   <m ...

  4. C# 得到sqlserver 数据库存储过程,触发器,视图,函数 的定义

    经常从 生产环境 到测试环境, 需要重新弄一整套的数据库环境, 除了表结构以及表结构数据,可以用动软代码生成器 生成之外, 像 存储过程,触发器,等,好像没有批量操作的,意义哥哥农比较麻烦, 所以最近 ...

  5. Excel2003读取sqlserver数据库表数据(图)

  6. JAVA使用JDBC技术操作SqlServer数据库执行存储过程

    Java使用JDBC技术操作SqlServer数据库执行存储过程: 1.新建SQLSERVER数据库:java_conn_test 2.新建表:tb_User 3.分别新建三个存储过程: 1>带 ...

  7. python 读取SQLServer数据插入到MongoDB数据库中

    # -*- coding: utf-8 -*-import pyodbcimport osimport csvimport pymongofrom pymongo import ASCENDING, ...

  8. 查询Sqlserver数据库死锁的一个存储过程(转)

        使用sqlserver作为数据库的应用系统,都避免不了有时候会产生死锁, 死锁出现以后,维护人员或者开发人员大多只会通过sp_who来查找死锁的进程,然后用sp_kill杀掉.利用sp_who ...

  9. java读取CSV文件添加到sqlserver数据库

    在直接将CSV文件导入sqlserver数据库时出现了错误,原因还未找到,初步怀疑是数据中含有特殊字符.于是只能用代码导数据了. java读取CSV文件的代码如下: package experimen ...

随机推荐

  1. [转]Firefox拦截12306订票网站的解决办法

    解决方法:1.找到firefox选项设置(Ubuntu下的ff的选项在[Edit]-[Preferences]中) 2.点击[Advanced]-[Encryption]-[View Certific ...

  2. (poj 3660) Cow Contest (floyd算法+传递闭包)

    题目链接:http://poj.org/problem?id=3660 Description N ( ≤ N ≤ ) cows, conveniently numbered ..N, are par ...

  3. higncharts 去掉Highcharts.com链接

    将credits属性设为false credits: { enabled: false },

  4. oracle监听无法启动

    昨天再监听里新加了个地址,重启电脑后监听无法启动,删除新加地址就好了 # listener.ora Network Configuration File: d:\oracle\product\10.2 ...

  5. JS传递到后台中文 出现乱码问题

    js 异步传递中文字符,后台接收出现乱码问题 function showFirSelect(a){ var b = encodeURI(a); var secUrl = "<%=bas ...

  6. 6种炫酷的CSS3按钮边框动画特效

    6种炫酷的CSS3按钮边框动画特效Button border animate 用鼠标滑过下面的按钮看看效果! Draw Draw Meet Center Spin Spin Circle Spin T ...

  7. How to setup Eclipse with WinAVR and the Eclipse plugin AVR-eclipse

    源:How to setup Eclipse with WinAVR and the Eclipse plugin AVR-eclipse Arduino development with Eclip ...

  8. MODBUS协议详解

    MODBUS是一个工业上通信常用的通讯协议,一般在PLC上面用的比较多,主要是定义了一种数据传输的规范,比如数据发给谁,数据是干嘛的,数据错没错,接收到数据的从机告诉我数据有没有接受到等. 传输的方式 ...

  9. Ext分页之php中,真分页显示

    这是我经过很多天调试的真分页显示Ext组件 显示页面ext.php <html> <head> <meta http-equiv="Content-Type&q ...

  10. Cookie的格式及组成

    转自:http://blog.csdn.net/talking12391239/article/details/9665185 Cookie由变量名和值组成,类似JavaScript变量.其属性里既有 ...