国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C# Ado.net實現讀取SQLServer數據庫存儲過程列表及參數信息示例

2020-01-24 00:10:23
字體:
來源:轉載
供稿:網友

本文實例講述了C# Ado.net讀取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 ton c.id = t.idinner join dbo.systypes typ on typ.xtype = c.xtypewhere OBJECTPROPERTY(t.id, N'IsUserTable') = 1and 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 = 系統(tǒng)表TF = 表函數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函數列表:

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

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

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

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

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 海门市| 信阳市| 塔河县| 内乡县| 民勤县| 游戏| 蒲江县| 红桥区| 新建县| 铜川市| 阜阳市| 德江县| 八宿县| 宝鸡市| 长垣县| 资溪县| 修武县| 香港 | 兴和县| 图们市| 舟山市| 左云县| 壤塘县| 临泉县| 从化市| 叶城县| 昌邑市| 中宁县| 闵行区| 达州市| 灵山县| 广宁县| 府谷县| 五峰| 阳泉市| 巴南区| 保亭| 那坡县| 桓仁| 浙江省| 申扎县|