这个 可以 实现 的 你数据库 要先把远程数据库注册到本地 然后 就是语句 例如select * from [192.168.0.130].bbs.dbo.users 如果和 本地数据库 还有交互 例如select * from [192.168.0.130].bbs.dbo.users as t1 left join [192.168.0.148].user.dbo.users as t2 on t1.username=t2.username 其他的同理
/// <summary> /// 执行多条SQL语句,实现数据库事务。 /// </summary> /// <param name="SQLStringList">多条SQL语句</param> public static int ExecuteSqlTran(List<String> SQLStringList) { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; SqlTransaction tx = conn.BeginTransaction(); cmd.Transaction = tx; try { int count = 0; for (int n = 0; n < SQLStringList.Count; n++) { string strsql = SQLStringList[n]; if (strsql.Trim().Length > 1) { cmd.CommandText = strsql; count += cmd.ExecuteNonQuery(); } } tx.Commit(); return count; } catch { tx.Rollback(); return 0; } } }
BEGIN TRANSACTION ..................... COMMIT TRANSACTION
这是我在网上搜索的一个方法,不知道怎么用····请大家指教····?? create database link lname connect to username identified by pword using 'conn1';//'conn1'为连接字符串,连接到另一个服务器。 在触发器里面要操作另一个服务器上的表或其它对象时加@lname 如:向另一个数据库中的tbname表中插入数据。 insert into tbname@lname values('aaa','bbb'); 我不知道这个具体怎么改,能实现我向远程数据库 insert 数据~~???
你数据库 要先把远程数据库注册到本地
然后 就是语句
例如select * from [192.168.0.130].bbs.dbo.users
如果和 本地数据库 还有交互
例如select * from [192.168.0.130].bbs.dbo.users as t1 left join [192.168.0.148].user.dbo.users as t2 on t1.username=t2.username 其他的同理
/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">多条SQL语句</param>
public static int ExecuteSqlTran(List<String> SQLStringList)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
SqlTransaction tx = conn.BeginTransaction();
cmd.Transaction = tx;
try
{
int count = 0;
for (int n = 0; n < SQLStringList.Count; n++)
{
string strsql = SQLStringList[n];
if (strsql.Trim().Length > 1)
{
cmd.CommandText = strsql;
count += cmd.ExecuteNonQuery();
}
}
tx.Commit();
return count;
}
catch
{
tx.Rollback();
return 0;
}
}
}
失败了就会自动回滚,SQL默认的就是隐式事务如果插入多行的话
就只能手动开启显式事务了
判断是否成功或者失败
然后提交或者回滚
[192.168.0.130] 组名
bbs数据库名
users 表名
回滚是事务的概念,你定义一个事务。
事务开始
执行第一条:delete from table1
执行第二条: delete from table2
事务结束
如果这个过程中发生了错误,就会全部取消,不会只执行了一半。
这是C#执行事务的方法:
http://blog.csdn.net/greatverve/archive/2008/11/19/3332569.aspx
这是事务的例子:
http://blog.csdn.net/greatverve/archive/2008/11/03/3208286.aspx
SqlConnection conn = new SqlConnection(Conn.SqlConn);//连接远程数据库
conn.Open();
SqlTransaction sp = conn.BeginTransaction();
try
{
bool success = false;
foreach (REQUISTION_FORM_DETAIL detail in requistion.Details)
{
UpdateState(detail.F_FITTING_MAIN_ID, username, itemid, sp);
}
success = true;
sp.Commit();
return success;
}
catch (Exception ex)
{
sp.Rollback();
throw ex;
}
finally
{
conn.Close();
}
#endregion如果同时两个数据库的话,就不能使用事务回滚了
你向远程数据库插入数据涉及几个数据库?
然后,如果发生错误,我能不能把刚才插入 远程数据库 abc 表的数据给回滚掉 (这是我的第二个问题,能不能直接用代码写一下呢···谢谢!!)
if(flag)
{
sp.Commit();}
else
{
sp.Rollback();
}
int count=插入语句影响的行数
对count进行判断
BEGIN TRANSACTION
.....................
COMMIT TRANSACTION
create database link lname connect to username identified by pword using 'conn1';//'conn1'为连接字符串,连接到另一个服务器。
在触发器里面要操作另一个服务器上的表或其它对象时加@lname
如:向另一个数据库中的tbname表中插入数据。
insert into tbname@lname values('aaa','bbb'); 我不知道这个具体怎么改,能实现我向远程数据库 insert 数据~~???
1.你把连本地数据库的IP换成远程的数据库IP就成了啊。
2.使用事务是可以的