FSharp Resource Web- F# F#文档 F#新闻 F#专家 F#开发系列教程
得到数据库存储过程列表:
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 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. 得到数据库存储过程列表:
using System.Data.SqlClient;private void GetStoredProceduresList()
{string sql = "select * from dbo.sysobjects where OBJECTPROPERTY(id, N'IsProcedure') = 1 order by name";
string c style="color: #006080">@"Data Source=(local);Initial Catalog=mydatabase; Integrated Security=True; Connection Timeout=1;";SqlConnection c style="color: #0000ff">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 c style="color: #006080">@"Data Source=(local);Initial Catalog=mydatabase; Integrated Security=True; Connection Timeout=1;";SqlConnection c style="color: #0000ff">new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand();cmd.C >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 valueMessageBox.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 c >"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 c >SqlConnection c style="color: #0000ff">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 c >"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视图列表:
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 c >SqlConnection c style="color: #0000ff">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 c >List<TreeNode> nodes = new List<TreeNode>();SqlConnection c style="color: #0000ff">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 '视图名'
- SQL Server 性能调优札记之一 (2009-02-20 11:00:24)
- SQL Server 性能调优札记之二 (2009-02-20 11:01:03)
- SQL Server 性能调优札记之三 (2009-02-20 11:01:46)
- 数据库索引-Myshuiyue (2009-03-31 05:01:36)
- SQL性能优化 (2009-04-08 09:34:54)
- SQL Server性能优化的一些简单技巧 (2009-04-21 09:35:30)
- mssql和mysql区别 (2009-05-22 04:35:10)
- 名称(*)
- 邮箱
- 网站链接
- 验证(*)
-
正文(*)(留言最长字数:1024)
- 记住我,下次回复时不用输入个人信息
- 欢迎参与讨论,请在这里发表您的看法,表达您的观点。
