zoukankan      html  css  js  c++  java
  • C#读取SqlServer存储过程及参数《转》

    读取SQLServer数据库存储过程列表及参数信息

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

    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();

        }

                  

    }

     

  • 相关阅读:
    SVG 支持动画
    js ==与===区别(两个等号与三个等号
    PHP设计模式之单例模式
    MySQL函数大全 及用法示例
    MySQL存储过程和函数
    MYSQl left join联合查询效率分析
    STL 算法[转 ]
    PHP 调整浏览器缓存
    php filter_var[转]
    C++ string学习[转]
  • 原文地址:https://www.cnblogs.com/kingwangzhen/p/1624106.html
Copyright © 2011-2022 走看看