本文实例讲述了c# Ado.net读取数状态"置疑"据库存储过程列表及参数信息的方法。分享给大家供大家参考,具体如下:
得到数据库存储过程列表:
从dbo选择*。sysobjects OBJECTPROPERTY (id、N 'IsProcedure ')=1订单的名字 >之前得到某个存储过程的参数信息:(SQL方法)
select * from syscolumns ID的地方 (从sysobjects作为选择id OBJECTPROPERTY (id、N 'IsProcedure ')=1 和id=object_id (N [dbo] . [mystoredprocedurename])) >之前得到某个存储过程的参数信息:(Ado.net方法)
SqlCommandBuilder.DeriveParameters (mysqlcommand); >之前得到数据库所有表:
从dbo选择*。sysobjects OBJECTPROPERTY (id、N 'IsUserTable ')=1订单的名字 >之前得到某个表中的字段信息:
选择c.name ColumnName, c。colorder ColumnOrder, c。xtype作为数据类型,typ.name DataTypeName, c。长度,c。从dbo isnullable。syscolumns c内连接dbo。sysobjects t 在c。id=t.id 内连接dbo。systypes typ> 使用System.Data.SqlClient; 私人空间GetStoredProceduresList () { 字符串从dbo sql=" select *。sysobjects OBJECTPROPERTY (id、N 'IsProcedure ')=1订单的名字”; 字符串connStr=@数据源=(当地);初始目录=mydatabase;集成安全=True;连接超时=1;”; SqlConnection康涅狄格州=new SqlConnection (connStr); 康涅狄格州SqlCommand cmd=new SqlCommand (sql); cmd。CommandType=CommandType.Text; 试一试 { conn.Open (); 使用(SqlDataReader MyReader=cmd.ExecuteReader ()) { 而(MyReader.Read ()) {//存储过程名 this.listBox1.Items.Add (MyReader [0] .ToString ()); } } } 最后 { conn.Close (); } } >之前<强> 2。得到某个存储过程的参数信息:(Ado.net方法)强>
使用System.Data.SqlClient; 私人空间GetArguments () { 字符串connStr=@数据源=(当地);初始目录=mydatabase;集成安全=True;连接超时=1;”; SqlConnection康涅狄格州=new SqlConnection (connStr); SqlCommand cmd=new SqlCommand (); cmd。连接=康涅狄格州; cmd。CommandText=" mystoredprocedurename”; cmd。CommandType=CommandType.StoredProcedure; 试一试 { conn.Open (); SqlCommandBuilder.DeriveParameters (cmd); foreach (cmd.Parameters SqlParameter var) { 如果(cmd.Parameters.IndexOf (var)==0)继续;//跳过返回值 MessageBox.Show(字符串。格式(“参数:{0}{1}类型:{2}{1}方向:{3}”, var.ParameterName, Environment.NewLine, var.SqlDbType.ToString (), var.Direction.ToString ()))); } } 最后 { conn.Close (); } } >之前<强> 3。列出所有数据库:强>
使用系统; 使用System.Windows.Forms; 使用System.Collections.Generic; 使用text; 使用System.Data; 使用System.Data.SqlClient; 私有静态字符串connString=俺中踩畔?True;超时=5;数据源=192.168.1.8;用户ID=sa;密码=密码”;///& lt; summary>///列出所有数据库///& lt;/summary>///& lt; returns> & lt;/returns> 公共string [] getdatabase () { 返回GetList(“从sysdatabases顺序选择名字的名字asc”); } 私人string [] GetList (string sql) { 如果(String.IsNullOrEmpty (connString))返回null; 字符串connStr=connString; SqlConnection康涅狄格州=new SqlConnection (connStr); 康涅狄格州SqlCommand cmd=new SqlCommand (sql); cmd。CommandType=CommandType.Text; 试一试 { conn.Open (); Listret=new List (); 使用(SqlDataReader MyReader=cmd.ExecuteReader ()) { 而(MyReader.Read ()) { ret.Add (MyReader [0] .ToString ()); } } 如果(ret.Count比;0)返回ret.ToArray (); 返回null; } 最后 { conn.Close (); } } >之前 <强> 4。得表表到格列表:强>
私有静态字符串connString=俺中踩畔?True;超时=5;数据源=192.168.1.8;初始目录=myDb;用户ID=sa;密码=密码”;/*从sysobjects选择名字xtype=- - - - - -“u” C=检查约束 D=默认值或违约约束 F=外键约束 L=日志 FN=标量函数 如果=内嵌表函数 P=存储过程 PK=主键约束(类型是K) 射频=复制筛选存储过程 S=系统表 TF=表函数 TR=触发器 U=用户表 UQ=独特约束(类型是K) V=视图 X=扩展存储过程 */公共string [] GetTableList () { 返回GetList(“选择的名字从sysobjects xtype=癠”和名称& lt;比;dtproperties秩序的名字asc”); }c# Ado.net实现读取数状态"置疑"据库存储过程列表及参数信息示例