亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

得到數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程列表:

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

得到某個(gè)存儲(chǔ)過(guò)程的參數(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]'))

得到某個(gè)存儲(chǔ)過(guò)程的參數(shù)信息:(Ado.net方法)

SqlCommandBuilder.DeriveParameters(mysqlcommand);

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

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

得到某個(gè)表中的字段信息:

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ù)庫(kù)存儲(chǔ)過(guò)程列表:

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. 得到某個(gè)存儲(chǔ)過(guò)程的參數(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ù)庫(kù):

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ù)庫(kù)
/// </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 = 默認(rèn)值或 DEFAULT 約束
F = FOREIGN KEY 約束
L = 日志
FN = 標(biāo)量函數(shù)
IF = 內(nèi)嵌表函數(shù)
P = 存儲(chǔ)過(guò)程
PK = PRIMARY KEY 約束(類(lèi)型是 K)
RF = 復(fù)制篩選存儲(chǔ)過(guò)程
S = 系統(tǒng)表
TF = 表函數(shù)
TR = 觸發(fā)器
U = 用戶(hù)表
UQ = UNIQUE 約束(類(lèi)型是 K)
V = 視圖
X = 擴(kuò)展存儲(chǔ)過(guò)程
*/
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. 得到存儲(chǔ)過(guò)程列表:

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,存儲(chǔ)過(guò)程的參數(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各個(gè)Field的詳細(xì)定義:

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. 得到存儲(chǔ)過(guò)程內(nèi)容:

類(lèi)似“8. 得到table的索引Index信息”,SQL語(yǔ)句為:EXEC Sp_HelpText '存儲(chǔ)過(guò)程名'

12. 得到視圖View定義:

類(lèi)似“8. 得到table的索引Index信息”,SQL語(yǔ)句為:EXEC Sp_HelpText '視圖名'

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

更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《C#常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》、《C#常見(jiàn)控件用法教程》、《C#窗體操作技巧匯總》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》及《C#程序設(shè)計(jì)之線程使用技巧總結(jié)

希望本文所述對(duì)大家C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

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

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

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

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

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

    C# BackgroundWorker使用教程

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

    在.net應(yīng)用程序中運(yùn)行其它EXE文件的方法

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

    Unity常用命令模式詳解

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

    C#畫(huà)筆Pen保存和恢復(fù)圖形對(duì)象的設(shè)置方法

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

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

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

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

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

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

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

    C# StringBuilder和string

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

最新評(píng)論