62,272
社区成员
发帖
与我相关
我的任务
分享 //操作数据库对象
#region operateDataBase(DDL)
/// <summary>
/// 附加数据库
/// </summary>
/// <param name="strCon">连接字符串</param>
/// <param name="DBName">要生成的数据库名</param>
/// <param name="strMdf">mdf文件位置</param>
/// <param name="strLdf">ldf文件位置</param>
/// <returns></returns>
public bool attachDB(string strCon,string DBName,string strMdf,string strLdf)
{
bool bl=true;
try
{
cnn.ConnectionString=strCon;
if (cnn.State!=ConnectionState.Open)
cnn.Open();
cmd.Connection=cnn;
cmd.CommandText=@"sp_attach_db";
cmd.Parameters.Add(new OleDbParameter("@dbname",OleDbType.VarChar));
cmd.Parameters["@dbname"].Value=DBName;
cmd.Parameters.Add(new OleDbParameter("@filename1",OleDbType.VarChar));
cmd.Parameters["@filename1"].Value=strMdf;
cmd.Parameters.Add(new OleDbParameter("@filename2",OleDbType.VarChar));
cmd.Parameters["@filename2"].Value=strLdf;
cmd.CommandType=CommandType.StoredProcedure;
cmd.ExecuteNonQuery();
}
catch
{
// MessageBox.Show(e.Message.ToString());
bl=false;
}
finally
{
cnn.Close();
}
return bl;
}
/// <summary>
/// 分离数据库
/// </summary>
/// <param name="strCon">连接字符串</param>
/// <param name="DBName">数据库名</param>
/// <returns></returns>
public bool detachDB(string strCon,string DBName)
{
bool bl=true;
try
{
cnn.ConnectionString=strCon;
if (cnn.State!=ConnectionState.Open)
cnn.Open();
cmd.Connection=cnn;
cmd.CommandText=@"sp_detach_db";
cmd.Parameters.Add(new OleDbParameter("@dbname",OleDbType.VarChar));
cmd.Parameters["@dbname"].Value=DBName;
cmd.CommandType=CommandType.StoredProcedure;
cmd.ExecuteNonQuery();
}
catch
{
bl=false;
}
finally
{
cnn.Close();
}
return bl;
}
/// <summary>
/// 备份数据库
/// </summary>
/// <param name="strCon">连接字符串</param>
/// <param name="DBName">数据库名</param>
/// <param name="backupName">备份名</param>
/// <param name="backupFile">备份文件位置</param>
/// <returns></returns>
public bool BackUpDB(string strCon,string DBName,string backupName,string backupFile)
{
bool bl=true;
try
{
cnn.ConnectionString=strCon;
if (cnn.State!=ConnectionState.Open)
cnn.Open();
cmd.Connection=cnn;
cmd.CommandText=@"BACKUP DATABASE "+DBName+" to disk='"+backupFile+"'"+
"WITH NOINIT , NOUNLOAD , NAME = N'"+backupName+"', NOSKIP , STATS = 10, NOFORMAT ";
cmd.CommandType=CommandType.Text;
cmd.ExecuteNonQuery();
}
catch
{
bl=false;
}
finally
{
cnn.Close();
}
return bl;
}
/// <summary>
/// 还原数据库
/// </summary>
/// <param name="strCon">连接字符串</param>
/// <param name="DBName">数据库名</param>
/// <param name="backupFile">备份文件位置</param>
/// <returns></returns>
public bool restoreDB(string strCon,string DBName,string backupFile)
{
bool bl=true;
try
{
cnn.ConnectionString=strCon;
if (cnn.State!=ConnectionState.Open)
cnn.Open();
cmd.Connection=cnn;
cmd.CommandText=@"RESTORE FILELISTONLY from disk='"+backupFile+"'";
cmd.CommandType=CommandType.Text;
cmd.ExecuteNonQuery();
}
catch
{
bl=false;
}
finally
{
cnn.Close();
}
return bl;
}
public static void DbBackup(string strHost,string strUserName,string strUserPwd,string strDBName,string strDBBakName)
{
SQLDMO.Backup oBackup = new SQLDMO.BackupClass();
SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
try
{
oSQLServer.LoginSecure = false;
oSQLServer.Connect(strHost,strUserName,strUserPwd);
oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
oBackup.Database = strDBName;
oBackup.Files = strDBBakName;
oBackup.BackupSetName = strDBName;
oBackup.BackupSetDescription = "数据库备份";
oBackup.Initialize = true;
oBackup.SQLBackup(oSQLServer);
}
catch
{
throw;
}
finally
{
oSQLServer.DisConnect();
}
}
///
/// 数据库恢复
///
public static void DbRestore(string strHost,string strUserName,string strUserPwd,string strDBName,string strDBBakName)
{
SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();
SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
try
{
oSQLServer.LoginSecure = false;
oSQLServer.Connect(strHost, strUserName,strUserPwd);
oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
oRestore.Database = strDBName;
oRestore.Files = strDBBakName;
oRestore.FileNumber = 1;
oRestore.ReplaceDatabase = true;
oRestore.SQLRestore(oSQLServer);
}
catch
{
throw;
}
finally
{
oSQLServer.DisConnect();
}
}
#endregion