欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# Ado.net實現(xiàn)讀取SQLServer數(shù)據(jù)庫存儲過程列表及參數(shù)信息示例

 更新時間:2019年02月12日 11:12:07   作者:linFen  
這篇文章主要介紹了C# Ado.net實現(xiàn)讀取SQLServer數(shù)據(jù)庫存儲過程列表及參數(shù)信息,結合實例形式總結分析了C#針對SQLServer數(shù)據(jù)庫存儲過程及參數(shù)信息的各種常見操作技巧,需要的朋友可以參考下

本文實例講述了C# Ado.net讀取SQLServer數(shù)據(jù)庫存儲過程列表及參數(shù)信息的方法。分享給大家供大家參考,具體如下:

得到數(shù)據(jù)庫存儲過程列表:

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

得到某個存儲過程的參數(shù)信息:(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]'))

得到某個存儲過程的參數(shù)信息:(Ado.net方法)

SqlCommandBuilder.DeriveParameters(mysqlcommand);

得到數(shù)據(jù)庫所有表:

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. 得到數(shù)據(jù)庫存儲過程列表:

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. 得到某個存儲過程的參數(shù)信息:(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. 列出所有數(shù)據(jù)庫:

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>
/// 列出所有數(shù)據(jù)庫
/// </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 = 標量函數(shù)
IF = 內嵌表函數(shù)
P = 存儲過程
PK = PRIMARY KEY 約束(類型是 K)
RF = 復制篩選存儲過程
S = 系統(tǒng)表
TF = 表函數(shù)
TR = 觸發(fā)器
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函數(shù)列表:

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,F(xiàn)unction,存儲過程的參數(shù),F(xiàn)ield信息:

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 '視圖名'

(以上代碼可用于代碼生成器,列出數(shù)據(jù)庫的所有信息)

更多關于C#相關內容感興趣的讀者可查看本站專題:《C#常見數(shù)據(jù)庫操作技巧匯總》、《C#常見控件用法教程》、《C#窗體操作技巧匯總》、《C#數(shù)據(jù)結構與算法教程》、《C#面向對象程序設計入門教程》及《C#程序設計之線程使用技巧總結

希望本文所述對大家C#程序設計有所幫助。

相關文章

  • C#中如何為枚舉類型添加描述方法【小技巧】

    C#中如何為枚舉類型添加描述方法【小技巧】

    相信很多人對枚舉并不陌生,枚舉可以很方便和直觀的管理一組特定值。下面這篇文章主要給大家介紹了關于C#中如何為枚舉類型添加描述方法的相關資料,需要的朋友可以參考下
    2019-02-02
  • C#實現(xiàn)自定義單選和復選按鈕樣式

    C#實現(xiàn)自定義單選和復選按鈕樣式

    這篇文章主要為大家詳細介紹了如何利用C#實現(xiàn)定義單選和復選按鈕樣式,文中的示例代碼講解詳細,對我們學習C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C# BackgroundWorker使用教程

    C# BackgroundWorker使用教程

    這篇文章主要為大家詳細介紹了C# BackgroundWorker使用教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • 在.net應用程序中運行其它EXE文件的方法

    在.net應用程序中運行其它EXE文件的方法

    這篇文章主要介紹了在.net應用程序中運行其它EXE文件的方法,涉及C#進程操作的相關技巧,需要的朋友可以參考下
    2015-05-05
  • Unity常用命令模式詳解

    Unity常用命令模式詳解

    這篇文章主要為大家詳細介紹了Unity常用命令模式的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • C#畫筆Pen保存和恢復圖形對象的設置方法

    C#畫筆Pen保存和恢復圖形對象的設置方法

    這篇文章主要介紹了C#畫筆Pen保存和恢復圖形對象的設置方法,實例分析了畫筆的保存save及恢復屬性Restore的相關使用技巧,需要的朋友可以參考下
    2015-06-06
  • C#?md5?算法實現(xiàn)代碼

    C#?md5?算法實現(xiàn)代碼

    相對C#來說,md5算法就相對簡單很多,因為?System.Security.Cryptography;?已經(jīng)包含了md5算法。所以我們只需創(chuàng)建MD5類對象即可實現(xiàn)md5算法,今天通過本文給大家介紹C#?md5?算法實現(xiàn),感興趣的朋友一起看看吧
    2022-11-11
  • c#生成excel示例sql數(shù)據(jù)庫導出excel

    c#生成excel示例sql數(shù)據(jù)庫導出excel

    這篇文章主要介紹了c#操作excel的示例,里面的方法可以直接導出數(shù)據(jù)到excel,大家參考使用吧
    2014-01-01
  • C#利用Windows自帶gdi32.dll實現(xiàn)抓取屏幕功能實例

    C#利用Windows自帶gdi32.dll實現(xiàn)抓取屏幕功能實例

    這篇文章主要介紹了C#利用Windows自帶gdi32.dll實現(xiàn)抓取屏幕功能,是C#程序設計中常見的一個重要技巧,需要的朋友可以參考下
    2014-08-08
  • C# StringBuilder和string

    C# StringBuilder和string

    這篇文章主要介紹了C# StringBuilder和string,文章圍繞StringBuilder和string的相關資料展開內容,需要的朋友可以參考一下
    2021-11-11

最新評論