禁用启用oracle数据库中所有约束(c#实现)
2016-04-01 17:00
381 查看
方法说明:先用sql语句将启用/禁用各个约束的语句查询出来,然后逐条执行。以下为C#源代码:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OracleClient;
namespace SynDBDll
{
public class DBOprtMgr
{
OracleConnection m_conn;
public OracleConnection Conn { get { return m_conn; } }
public DBOprtMgr(string connStr)
{
m_conn = new OracleConnection(connStr);
}
public bool ForbidAllConstants()
{
List<string> forbidStrs = new List<string>();
if (!OpenConn()) return false;
string forbitSqlStr = "select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_type='R'";//该语句能查询出很多条sql语句,每条语句禁用一个约束
OracleCommand command = new OracleCommand(forbitSqlStr, m_conn);
OracleDataReader reader = command.ExecuteReader();
while (reader.Read())
{
string onsStr = reader.GetValue(0).ToString();
if (onsStr[onsStr.Length - 1] == ';')
onsStr = onsStr.Substring(0, onsStr.Length - 1);
forbidStrs.Add(onsStr);
}
reader.Close();
OracleTransaction theTransaction = Conn.BeginTransaction();
try
{
foreach (string oneSqlStr in forbidStrs)
ExecuteCommand(oneSqlStr, theTransaction);
}
catch
{
theTransaction.Rollback();
// 关闭数据库连接
m_conn.Close();
return false;
}
theTransaction.Commit();
// 关闭数据库连接
m_conn.Close();
return true;
}
public bool RestartAllConstants()
{
List<string> restartStrs = new List<string>();
if (!OpenConn()) return false;
string restartSqlStr = "select 'alter table '||table_name||' enable constraint '||constraint_name||';' from user_constraints where constraint_type='R'";//该语句能查询出很多条sql语句,每条语句启用一个约束
OracleCommand command = new OracleCommand(restartSqlStr, m_conn);
OracleDataReader reader = command.ExecuteReader();
while (reader.Read())
{
string onsStr = reader.GetValue(0).ToString();
if (onsStr[onsStr.Length - 1] == ';')
onsStr = onsStr.Substring(0, onsStr.Length - 1);
restartStrs.Add(onsStr);
}
reader.Close();
OracleTransaction theTransaction = Conn.BeginTransaction();
try
{
foreach (string oneSqlStr in restartStrs)
ExecuteCommand(oneSqlStr, theTransaction);
}
catch
{
theTransaction.Rollback();
// 关闭数据库连接
m_conn.Close();
return false;
}
theTransaction.Commit();
// 关闭数据库连接
m_conn.Close();
return true;
}
public void ExecuteCommand(string sqlStr, OracleTransaction theTransaction)
{
if (!OpenConn()) return;
OracleCommand command = new OracleCommand(sqlStr, m_conn);
command.Transaction = theTransaction;
command.ExecuteNonQuery();
}
public bool OpenConn()
{
if (m_conn.State != ConnectionState.Open)
m_conn.Open();
if (m_conn.State != ConnectionState.Open)
{
Console.WriteLine("无法打开数据库连接!");
return false;
}
return true;
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OracleClient;
namespace SynDBDll
{
public class DBOprtMgr
{
OracleConnection m_conn;
public OracleConnection Conn { get { return m_conn; } }
public DBOprtMgr(string connStr)
{
m_conn = new OracleConnection(connStr);
}
public bool ForbidAllConstants()
{
List<string> forbidStrs = new List<string>();
if (!OpenConn()) return false;
string forbitSqlStr = "select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_type='R'";//该语句能查询出很多条sql语句,每条语句禁用一个约束
OracleCommand command = new OracleCommand(forbitSqlStr, m_conn);
OracleDataReader reader = command.ExecuteReader();
while (reader.Read())
{
string onsStr = reader.GetValue(0).ToString();
if (onsStr[onsStr.Length - 1] == ';')
onsStr = onsStr.Substring(0, onsStr.Length - 1);
forbidStrs.Add(onsStr);
}
reader.Close();
OracleTransaction theTransaction = Conn.BeginTransaction();
try
{
foreach (string oneSqlStr in forbidStrs)
ExecuteCommand(oneSqlStr, theTransaction);
}
catch
{
theTransaction.Rollback();
// 关闭数据库连接
m_conn.Close();
return false;
}
theTransaction.Commit();
// 关闭数据库连接
m_conn.Close();
return true;
}
public bool RestartAllConstants()
{
List<string> restartStrs = new List<string>();
if (!OpenConn()) return false;
string restartSqlStr = "select 'alter table '||table_name||' enable constraint '||constraint_name||';' from user_constraints where constraint_type='R'";//该语句能查询出很多条sql语句,每条语句启用一个约束
OracleCommand command = new OracleCommand(restartSqlStr, m_conn);
OracleDataReader reader = command.ExecuteReader();
while (reader.Read())
{
string onsStr = reader.GetValue(0).ToString();
if (onsStr[onsStr.Length - 1] == ';')
onsStr = onsStr.Substring(0, onsStr.Length - 1);
restartStrs.Add(onsStr);
}
reader.Close();
OracleTransaction theTransaction = Conn.BeginTransaction();
try
{
foreach (string oneSqlStr in restartStrs)
ExecuteCommand(oneSqlStr, theTransaction);
}
catch
{
theTransaction.Rollback();
// 关闭数据库连接
m_conn.Close();
return false;
}
theTransaction.Commit();
// 关闭数据库连接
m_conn.Close();
return true;
}
public void ExecuteCommand(string sqlStr, OracleTransaction theTransaction)
{
if (!OpenConn()) return;
OracleCommand command = new OracleCommand(sqlStr, m_conn);
command.Transaction = theTransaction;
command.ExecuteNonQuery();
}
public bool OpenConn()
{
if (m_conn.State != ConnectionState.Open)
m_conn.Open();
if (m_conn.State != ConnectionState.Open)
{
Console.WriteLine("无法打开数据库连接!");
return false;
}
return true;
}
}
}
相关文章推荐
- Oracle修改字段类型方法总结
- 【转】oracle定制定时执行任务
- 数据库迁移.从DB2到Oracle
- Oracle 树操作(select…start with…connect by…prior)
- oracle中 connect by prior 递归算法
- Oracle —— 闪回查询恢复delete删除数据
- Java —— JAVA读取Oracle中的blob图片字段并显示
- linux下安装oracle客户端
- 【转】ORACLE制作表时的“小计”和“合计” (ROLLUP)
- Oracle 检查表的数据变动
- Oracle —— to_date() 与 to_char() 日期和字符串转换
- ORACLE常用sql语句
- oracle——SQL复习09
- Oracle - 数据库的实例、表空间、用户、表之间关系
- Oracle创建DBLink的方法
- Oracle SYSAUX 表空间说明(转)
- oracle 存储过程的基本语法
- oracle创建用户并授权
- ERROR OGG-10151 Oracle GoldenGate Capture for Oracle, capture.prm: (capture
- Oracle与SQL Server实现表数据同步