国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - C# Ado.net實現讀取SQLServer數據庫存儲過程列表及參數信息示例

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

2022-03-09 13:43linFen C#

這篇文章主要介紹了C# Ado.net實現讀取SQLServer數據庫存儲過程列表及參數信息,結合實例形式總結分析了C#針對SQLServer數據庫存儲過程及參數信息的各種常見操作技巧,需要的朋友可以參考下

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

得到數據庫存儲過程列表:

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

得到某個存儲過程的參數信息:(SQL方法)

?
1
2
3
4
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方法)

?
1
SqlCommandBuilder.DeriveParameters(mysqlcommand);

得到數據庫所有表:

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

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

?
1
2
3
4
5
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. 得到數據庫存儲過程列表:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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方法)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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. 列出所有數據庫:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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表格列表:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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視圖列表:

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

6. 得到Function函數列表:

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

7. 得到存儲過程列表:

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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信息:

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

10. 得到Table各個Field的詳細定義:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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#程序設計有所幫助。

原文鏈接:http://www.cnblogs.com/luluping/archive/2009/07/24/1530528.html

延伸 · 閱讀

精彩推薦
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
主站蜘蛛池模板: 这里只有精品在线 | 黄片毛片毛片毛片 | 91精品国产91久久久久久吃药 | 草樱av| 成人动慢 | 精品久久久久久久久久久久 | 亚洲成人精品在线观看 | 国产精品毛片在线 | 色天堂视频 | 国产精品观看 | 欧美日韩国产在线 | 欧美精品一区二区三区四区 | 亚洲国产精品成人 | 欧美激情网 | 久久一区二区视频 | 精品一区二区久久久久久久网站 | 操久在线| 538在线精品| 亚洲成av人片在线观看无码 | 免费自拍视频 | 精品国产91亚洲一区二区三区www | 日韩一区二区免费电影 | 国产精品69毛片高清亚洲 | 国产黄色成人 | 成人免费毛片高清视频 | 最新av在线| 中日韩av| 亚洲一级毛片 | 日本福利视频 | 欧美福利视频 | 亚洲精品一区二区三区在线 | 国产 一区 | 国产精品一区久久久 | 中文字幕免费观看 | 国产欧美日韩综合精品一区二区 | 天堂va蜜桃一区二区三区漫画版 | 久久资源av | 一区二区久久 | 乱人伦xxxx国语对白 | jizz欧美大片 | 国产精品久久久久久久天堂 |