操作数据库系统信息

在我们的程序中,如何新建一个数据库?如何判断一个数据库是否存在?数据库的系统信息是怎样的?如何新建一个数据库表?如何得到一个数据库中所有的表明?等等这些任务,使用程序如何完成?这篇文章所展示的DBSystemHelper类将助你完成这些任务!DBSystemHelper是EnterpriseServerBase类库中DataAccess.DbSystem下的一个帮助类。类中所用到的IADOBase接口及SqlADOBase存在于EnterpriseServerBase.DataAccess命名空间中。

/**/ ///<summary>
///DBSystemHelper用于提供数据库系统自身的信息,并提供对数据库自身的操作。目前主要针对SqlServer数据库。
///朱伟2005.08.17
///</summary>

public class DBSystemHelper
{
publicDBSystemHelper()
{
}


GetAllDbSysInfos,IsDbExist,GetDbSysInformation#regionGetAllDbSysInfos,IsDbExist,GetDbSysInformation
/**////<summary>
///得到所有数据库的系统信息
///</summary>

publicstaticDbSysInformation[]GetAllDbSysInfos(stringdbIP,stringuser,stringpwd)
{
stringconnStr=string.Format("Server={0};User={1};Pwd={2}",dbIP,user,pwd);
IADOBaseadoBase
=newSqlADOBase(connStr);

try
{
DataSetds
=adoBase.DoQuery("sp_helpdb");
DbSysInformation[]dbInfos
=newDbSysInformation[ds.Tables[0].Rows.Count];
for(inti=0;i<dbInfos.Length;i++)
{
dbInfos[i].ID
=int.Parse(ds.Tables[0].Rows[i]["DbID"].ToString());
dbInfos[i].Name
=ds.Tables[0].Rows[i]["Name"].ToString();
dbInfos[i].Owner
=ds.Tables[0].Rows[i]["Owner"].ToString();
dbInfos[i].TimeCreated
=DateTime.Parse(ds.Tables[0].Rows[i]["Created"].ToString());
}


returndbInfos;
}

catch(Exceptionee)
{
throwee;
}

}


/**////<summary>
///判断某个数据库是否存在
///</summary>

publicstaticboolIsDbExist(stringdbIP,stringuser,stringpwd,stringdbName)
{
DbSysInformation[]dbInfos
=DBSystemHelper.GetAllDbSysInfos(dbIP,user,pwd);
for(inti=0;i<dbInfos.Length;i++)
{
if(dbInfos[i].Name==dbName)
{
returntrue;
}

}


returnfalse;
}


/**////<summary>
///得到指定数据库的系统信息
///</summary>

publicstaticDbSysInformationGetDbSysInformation(stringdbIP,stringuser,stringpwd,stringdbName)
{
DbSysInformation[]dbInfos
=DBSystemHelper.GetAllDbSysInfos(dbIP,user,pwd);
for(inti=0;i<dbInfos.Length;i++)
{
if(dbInfos[i].Name==dbName)
{
returndbInfos[i];
}

}


returnnull;
}

#endregion


GetAllTableNames,IsTableExist#regionGetAllTableNames,IsTableExist
/**////<summary>
///得到指定数据库中所有用户表的名字
///</summary>

publicstaticstring[]GetAllTableNames(stringconnStr)
{
IADOBaseadoBase
=newSqlADOBase(connStr);

stringquery="selectnamefromsysobjectswhereOBJECTPROPERTY(id,'IsUserTable')=1";
DataSetds
=adoBase.DoQuery(query);

string[]names=newstring[ds.Tables[0].Rows.Count];
for(inti=0;i<ds.Tables[0].Rows.Count;i++)
{
names[i]
=ds.Tables[0].Rows[i][0].ToString();
}


returnnames;
}


/**////<summary>
///判断特定的数据库中是否存在某个表
///</summary>

publicstaticboolIsTableExist(stringconnStr,stringtableName)
{
string[]names=DBSystemHelper.GetAllTableNames(connStr);
for(inti=0;i<names.Length;i++)
{
if(names[i]==tableName)
{
returntrue;
}

}


returnfalse;
}

#endregion


CreateDb,RemoveDb#regionCreateDb,RemoveDb
/**////<summary>
///创建一个新的数据库
///</summary>

publicstaticvoidCreateDb(stringdbIP,stringuser,stringpwd,stringnewDbName)
{
stringconnStr=string.Format("Server={0};User={1};Pwd={2}",dbIP,user,pwd);
IADOBaseadoBase
=newSqlADOBase(connStr);

stringcommand=string.Format("Createdatabase{0}",newDbName);
adoBase.DoCommand(command);
}


/**////<summary>
///删除指定数据库
///</summary>

publicstaticvoidRemoveDb(stringdbIP,stringuser,stringpwd,stringdbName)
{
stringconnStr=string.Format("Server={0};User={1};Pwd={2}",dbIP,user,pwd);
IADOBaseadoBase
=newSqlADOBase(connStr);

stringcommand=string.Format("Dropdatabase{0}",dbName);
adoBase.DoCommand(command);
}

#endregion


BackUpDb,RestoreDb#regionBackUpDb,RestoreDb
/**////<summary>
///备份指定数据库
///</summary>

publicstaticvoidBackUpDb(stringdbIP,stringuser,stringpwd,stringdbName,stringbakFilePath)
{
stringconnStr=string.Format("Server={0};User={1};Pwd={2}",dbIP,user,pwd);
IADOBaseadoBase
=newSqlADOBase(connStr);

stringcommand=string.Format("use{0}backupdatabase{0}todisk='{1}'",dbName,bakFilePath);
adoBase.DoCommand(command);
}


/**////<summary>
///还原指定数据库
///</summary>

publicstaticvoidRestoreDb(stringdbIP,stringuser,stringpwd,stringbakFilePath,stringdbName)
{
stringconnStr=string.Format("Server={0};User={1};Pwd={2}",dbIP,user,pwd);
IADOBaseadoBase
=newSqlADOBase(connStr);

stringcommand=string.Format("use{0}restoredatabase{0}fromdisk='{1}'",dbName,bakFilePath);
adoBase.DoCommand(command);
}

#endregion


CreateTable,RemoveTable#regionCreateTable,RemoveTable
/**////<summary>
///在数据库中创建指定表
///</summary>

publicvoidCreateTable(stringconnStr,DBTableDetailtableInfo)
{
//形成SQL语句
StringBuilderstrBuilder=newStringBuilder();
stringstr_create=string.Format("CreateTable{0}",tableInfo.TableName);
strBuilder.Append(str_create);
strBuilder.Append(
"(");

intstart=0;
if(tableInfo.Columns[0].ColumnType=="int")
{
if(tableInfo.Columns[0].IsAutoID)
{
strBuilder.Append(
string.Format("{0}intPRIMARYKEYIDENTITY,",tableInfo.Columns[0].ColumnName));
start
=1;
}

}


for(inti=start;i<tableInfo.Columns.Length;i++)
{
boollength_fixed=DBSystemHelper.DBType_lengthFixed(tableInfo.Columns[i].ColumnType);
stringitem;
if(length_fixed)
{
item
=string.Format("{0}{1}",tableInfo.Columns[i].ColumnName,tableInfo.Columns[i].ColumnType);
}

else
{
item
=string.Format("{0}{1}({2})",tableInfo.Columns[i].ColumnName,tableInfo.Columns[i].ColumnType);
}


if((tableInfo.Columns[i].DefaultValue!=null)&&(tableInfo.Columns[i].DefaultValue!=""))
{
item
+=string.Format("DEFAULT{0}",tableInfo.Columns[i].DefaultValue);
}


if(tableInfo.Columns[i].IsPkey)
{
item
+="PRIMARYKEY";
}


if(i!=tableInfo.Columns.Length-1)
{
item
+=",";
}


strBuilder.Append(item);

}


strBuilder.Append(
")");

//插入数据库
IADOBaseadoBase=newSqlADOBase(connStr);
adoBase.DoCommand(strBuilder.ToString());
}


/**////<summary>
///删除数据库中的指定表
///</summary>

publicvoidRemoveTable(stringconnStr,stringtableName)
{
IADOBaseadoBase
=newSqlADOBase(connStr);
stringdeleteStr=string.Format("DropTable{0}",tableName);
adoBase.DoCommand(deleteStr);
}


privatestaticboolDBType_lengthFixed(stringDB_type)
{
if(DB_type=="nvarchar"||DB_type=="varbinary")
{
returnfalse;
}


returntrue;
}

#endregion

}


/**/ ///<summary>
///某个数据库的系统信息
///</summary>

public class DbSysInformation
{
publicintID;
publicstringName;
publicstringOwner;
publicDateTimeTimeCreated;
}

你可能感兴趣的:(数据库)