时间:2021-05-20
本文实例讲述了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";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); node.ToolTipText = String.Format("{0}{1}{2}", MyReader[2].ToString(), Environment.NewLine, MyReader[1].ToString()); 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(), Environment.NewLine, MyReader[2].ToString(), 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#程序设计有所帮助。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
ADO.NET下的网站后台编程技术与数据库连接分析 ADO.NET提供了对包括SQLServer在内的各种数据源及通过xML与OLEDB公开的数据源的
本文实例讲述了C#使用Ado.net读取Excel表的方法。分享给大家供大家参考。具体分析如下:微软NET提供了一个交互的方法,通过使用ADO.NET与Micr
本文实例讲述了C#基于数据库存储过程的AJAX分页实现方法。分享给大家供大家参考。具体如下:首先我们在数据库(SQLServer)中声明定义存储过程复制代码代码
ADO.NET。ADO.NET提供了完整的站点数据库访问解决方案,它可与ASP.NET结合,在服务器端脚本中,提供对数据库的操作,使用户可以浏览含有数据库信息的
数据库的访问是所有编程语言中最重要的部分,C#提供了ADO.Net部件用于对数据库进行访问。我们将从最简单易用的微软Access数据库入手讨论在C#中对数据库的