我自己封装的SQL Server管理类,使用SQL DMO做的
来源:互联网 发布:软件项目开发总结 编辑:程序博客网 时间:2024/06/10 00:04
不知道为什么,发了好几次,都是一个小框框。。。。。。。。
public class DatabaseManager
{
public SQLDMO.Application sqlApp = new SQLDMO.Application();
public SQLDMO.SQLServer oServer = new SQLDMO.SQLServer();
public SQLDMO._Database CurrentDb { get; private set; }
public string ServerName { get; set; }
public string UserName { get; set; }
public string Pwd { get; set; }
private bool _TrustedConnection;
public DatabaseManager(string ServerName, string UserName, string Pwd)
{
this.ServerName = ServerName;
this.UserName = UserName;
this.Pwd = Pwd;
}
public DatabaseManager(string ServerName)
{
this.ServerName = ServerName;
_TrustedConnection = true;
}
public void Connect()
{
if (_TrustedConnection)
{
oServer.LoginSecure = true;
oServer.Connect(ServerName, System.Threading.Thread.CurrentPrincipal.Identity.Name, "");
}
else
{
oServer.Connect(ServerName, UserName, Pwd);
}
}
/// <summary>
/// 当前选取的数据库
/// </summary>
/// <param name="DatabaseName"></param>
/// <returns></returns>
public SQLDMO._Database GetCurrentDB(string DatabaseName)
{
foreach (SQLDMO.Database db in oServer.Databases)
{
if ((db.Name != null) && (db.Name == DatabaseName))
{
return db;
}
}
return null;
}
/// <summary>
/// 获取数据库的集合
/// </summary>
/// <returns></returns>
public List<String> GetDataBaseList()
{
List<String> list = new List<string>();
foreach (SQLDMO.Database db in oServer.Databases)
{
if ((db.Name != null) && (db.SystemObject == false))
list.Add(db.Name);
}
return list;
}
/// <summary>
/// 得到当前数据库所包含的数据表的列表
/// </summary>
/// <returns></returns>
public List<SQLDMO.Table> GetTableList()
{
List<SQLDMO.Table> ListTable = new List<SQLDMO.Table>();
foreach (SQLDMO.Table tbl in CurrentDb.Tables)
{
if (tbl.TypeOf == SQLDMO.SQLDMO_OBJECT_TYPE.SQLDMOObj_UserTable)
{
Console.WriteLine(tbl.Name);
ListTable.Add(tbl);
}
//tbl.Keys.Item(0).ReferencedTable
}
return ListTable;
}
/// <summary>
/// 得到当前数据库所包含的视图列表
/// </summary>
/// <returns></returns>
public List<SQLDMO.View> GetViewList()
{
List<SQLDMO.View> objList = new List<SQLDMO.View>();
foreach (SQLDMO.View viewItem in CurrentDb.Views)
{
if (viewItem.TypeOf == SQLDMO.SQLDMO_OBJECT_TYPE.SQLDMOObj_View)
{
objList.Add(viewItem);
}
}
return objList;
}
/// <summary>
/// 得到一个表所包含的所有列
/// </summary>
/// <param name="Table"></param>
/// <returns></returns>
public List<SQLDMO.Column> GetColumns(SQLDMO.Table Table)
{
List<SQLDMO.Column> ListColumn = new List<SQLDMO.Column>();
foreach (SQLDMO.Column col in Table.Columns)
{
ListColumn.Add(col);
}
return ListColumn;
}
/// <summary>
/// 得到一个表对应的外键表的集合
/// </summary>
/// <param name="Table"></param>
/// <returns></returns>
public List<SQLDMO.Table> GetReferencedTables(SQLDMO.Table Table)
{
List<SQLDMO.Table> tableList = new List<SQLDMO.Table>();
SQLDMO.QueryResults ItemList = Table.EnumReferencedTables();
return tableList;
}
/// <summary>
/// 根据表名称查找指定的表
/// </summary>
/// <param name="tableName"></param>
/// <returns></returns>
public SQLDMO.Table GetTableByName(string tableName)
{
foreach (SQLDMO.Table tbl in CurrentDb.Tables)
{
if (tbl.TypeOf == SQLDMO.SQLDMO_OBJECT_TYPE.SQLDMOObj_UserTable && tbl.Name.Equals(tableName))
{
return tbl;
}
}
return null;
}
/// <summary>
/// 根据名称查找指定的视图
/// </summary>
/// <param name="tableName"></param>
/// <returns></returns>
public SQLDMO.View GetViewByName(string viewName)
{
foreach (SQLDMO.View tbl in CurrentDb.Views)
{
if (tbl.TypeOf == SQLDMO.SQLDMO_OBJECT_TYPE.SQLDMOObj_View && tbl.Name.Equals(viewName))
{
return tbl;
}
}
return null;
}
/// <summary>
/// 查找指定列是否是外键列
/// </summary>
/// <param name="table"></param>
/// <param name="columnName"></param>
/// <returns></returns>
public bool IsColumnFK(SQLDMO.Table table, String columnName)
{
Boolean isFKCol = false;
foreach (Key key in table.Keys)
{
if (key.Type == SQLDMO_KEY_TYPE.SQLDMOKey_Foreign)
{
try
{
if (key.KeyColumns.FindName(columnName) != 0)
{
isFKCol = true;
break;
}
}
catch { }
}
}
return isFKCol;
}
}
- 我自己封装的SQL Server管理类,使用SQL DMO做的
- 用Delphi对SQL-DMO进行封装的一种实现
- C#中使用SQL Server分布式管理对象(SQL-DMO)
- VB.NET中使用SQL Server分布式管理对象(SQL-DMO)
- C#中使用SQL Server分布式管理对象(SQL-DMO)(有改动)
- C#中使用SQL Server分布式管理对象(SQL-DMO)
- C#中使用SQL Server分布式管理对象(SQL-DMO)
- C#中使用SQL Server分布式管理对象(SQL-DMO)
- Tip - SMO: SQL-DMO的替代者
- SQL DMO
- SQL Server的管理
- 在VFP里操作和管理SQL SERVER(介绍SQL-DMO)
- 使用SQL-DMO实现定制SQL Scripts
- 使用SQL-DMO实现定制SQL Scripts
- 使用SQL-DMO来操控SQL服务器
- 使用SQL-DMO实现定制SQL Scripts
- VB.NET DMO SQL SERVER备份恢复
- VB.NET DMO SQL SERVER备份恢复
- 老程序员的忠告:不要做浮躁的软件工程师
- VS2005下MFC开发的ActiveX控件的部分总结 inf 篇
- C#访问基于公开键认证的SFTP服务器
- 关于ORA-01653:表空间扩展失败问题的解决尝试
- 转到目录批处理
- 我自己封装的SQL Server管理类,使用SQL DMO做的
- 敏捷开发一千零一问系列之二十一:外部教练还是外部教练?(敏捷开发改进的主体问题)
- 用rand()和srand()产生为随机数的方法总结
- 最近热的迷迷糊糊,什么都学不下去,刷个usaco的水题
- 多线程下TableView用reloadData无法刷新解决方案IOS
- Radix trees(基数树)
- 数据字典的介绍
- xzcvx
- [杂谈]亿元大奖为何总落陌生客