求有关SqlTransaction方面的资料

beier 2003-10-10 08:54:48
不知哪位大虾可以说说SqlTransaction和SqlConnection,SqlCommand之间的关系及如何应用?
...全文
143 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
LevinForum 2003-10-10
  • 打赏
  • 举报
回复
http://www.lostinet.com/files/sqlscope.rar
dragontt 2003-10-10
  • 打赏
  • 举报
回复
不好意思,应该是:
SqlConnection conn=new SqlConnection(strConn);//strConn为连接字符串
SqlTransaction traction;
SqlCommand cmd=new SqlCommand(null,conn);
conn.Open();
traction = conn.BeginTransaction();
try
{
cmd.CommandText=strInsert; //插入语句
//cmd.Connection =conn;
cmd.ExecuteNonQuery();
traction.Commit();
}
catch(Exception ee)
{
traction.Rollback();
Response.Write(ee.Message);
}
finally
{
conn.Close();
}
dragontt 2003-10-10
  • 打赏
  • 举报
回复
try this:
SqlConnection conn=new SqlConnection(strConn);//strConn为连接字符串
//SqlTransaction traction;
SqlCommand cmd=new SqlCommand(null,conn);
conn.Open();
conn.BeginTransaction();
//cmd.Transaction=traction;
try
{
cmd.CommandText=strInsert; //插入语句
//cmd.Connection =conn;
cmd.ExecuteNonQuery();
traction.Commit();
}
catch(Exception ee)
{
traction.Rollback();
Response.Write(ee.Message);
}
finally
{
conn.Close();
}
acewang 2003-10-10
  • 打赏
  • 举报
回复
[C#]
public void RunSqlTransaction(string myConnString)
{
SqlConnection myConnection = new SqlConnection(myConnString);
myConnection.Open();

SqlCommand myCommand = new SqlCommand();
SqlTransaction myTrans;

// Start a local transaction
myTrans = myConnection.BeginTransaction("SampleTransaction");
// Must assign both transaction object and connection
// to Command object for a pending local transaction
myCommand.Connection = myConnection;
myCommand.Transaction = myTrans;

try
{
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
myCommand.ExecuteNonQuery();
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
myCommand.ExecuteNonQuery();
myTrans.Commit();
Console.WriteLine("Both records are written to database.");
}
catch(Exception e)
{
myTrans.Rollback("SampleTransaction");
Console.WriteLine(e.ToString());
Console.WriteLine("Neither record was written to database.");
}
finally
{
myConnection.Close();
}
}
流梓 2003-10-10
  • 打赏
  • 举报
回复
看看以下代码对你是否有帮助:
//直执行数据的插入、更新、删除
public static int Odbc_Comm(string InsertStr)
{
OdbcTransaction OdbcTrans=null;
OdbcConnection Conn;
Conn=Odbc_Open();
OdbcCommand Comm=new OdbcCommand();

try
{
OdbcTrans=Conn.BeginTransaction();
Comm.Connection=Conn;
Comm.CommandType=CommandType.Text;
Comm.CommandText=InsertStr;
Comm.Transaction=OdbcTrans;

Comm.ExecuteNonQuery();
OdbcTrans.Commit();
return 1;
}
catch(OdbcException Err)
{
OdbcTrans.Rollback();
throw Err;
}
finally
{
Conn.Close();
Comm.Connection.Close();
}
}
beier 2003-10-10
  • 打赏
  • 举报
回复
我的代码如下:
SqlConnection conn=new SqlConnection(strConn);//strConn为连接字符串
SqlTransaction traction;
SqlCommand cmd=new SqlCommand();
conn.Open();
traction=conn.BeginTransaction();
cmd.Transaction=traction;
try
{
cmd.CommandText=strInsert; //插入语句
cmd.Connection =conn;
cmd.ExecuteNonQuery();
traction.Commit();
}
catch(Exception ee)
{
traction.Rollback();
Response.Write(ee.Message);
}
finally
{
conn.Close();
}
查询语句出错后,将出现“ROLLBACK TRANSACTION 请求没有对应的 BEGIN TRANSACTION。“。我不知道错在哪里,怎样修改,请指教
树猫 2003-10-10
  • 打赏
  • 举报
回复
ASP.NET里的事务处理
作者:痕迹


  事务是一组组合成逻辑工作单元的数据库操作,虽然系统中可能会出错,但事务将控制和维护每个数据库的一致性和完整性。如果在事务过程中没有遇到错误,事务中的所有修改都将永久成为数据库的一部分。如果遇到错误,则不会对数据库作出任何修改。

  例如,在一个银行应用程序中,如果资金从一个帐户转到另一个帐户,则会将一定的金额记入一个帐户的贷方,同时将相同的金额记入另一个帐户的借方。由于计算机可能会因为停电、网络中断等原因而出现故障,所以有可能更新了一个表中的行,但没有更新相关表中的行。如果数据库支持事务,则可以将数据库操作组成一个事务,以防止因这些事件而使数据库出现不一致。


  在 ADO.NET 中,可以使用 Connection 和 Transaction 对象来控制事务。若要执行事务,请执行下列操作:


  调用 Connection 对象的 BeginTransaction 方法来标记事务的开始。BeginTransaction 返回对 Transaction 的引用。请保留此引用,以便将其分配给在事务中登记的 Command。

  将 Transaction 对象分配给要执行的 Command 的 Transaction 属性。如果通过活动的 Transaction 对象对 Connection 执行 Command,但该 Transaction 对象尚未分配给 Command 的 Transaction 属性,则将引发异常。

  执行所需的命令。

  调用 Transaction 对象的 Commit 方法来完成事务,或调用 Rollback 方法来取消事务。

  以下代码示例使用 Microsoft? SQL Server? 上的 ADO.NET 来演示事务逻辑。


SqlConnection myConnection = new SqlConnection("Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;");
myConnection.Open();
// 启动一个事务
SqlTransaction myTrans = myConnection.BeginTransaction();


// 为事务创建一个命令
SqlCommand myCommand = new SqlCommand();
myCommand.Connection=myConnection;
myCommand.Transaction = myTrans;
try
{
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, "Description")";
myCommand.ExecuteNonQuery();
myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, "Description")";
myCommand.ExecuteNonQuery();
myTrans.Commit();
Console.WriteLine("Both records are written to database.");
}
catch(Exception e)
{
myTrans.Rollback();
Console.WriteLine(e.ToString());
Console.WriteLine("Neither record was written to database.");
}
finally
{
myConnection.Close();
}

事务:是保证一组操作的完整性(要么整体成功,要么整体失败)
SqlConnection :数据库连接对象
SqlCommand :数据库命令对象,用以执行各种数据库操作
lang888 2003-10-10
  • 打赏
  • 举报
回复
'连接数据库信息
Dim str As String = ConfigurationSettings.AppSettings("conn")

Dim conn As SqlConnection
conn = New SqlConnection()
conn.ConnectionString = str
conn.Open()

conn为连接数据库的字符串


查询:
Dim da As SqlDataAdapter
Dim ds As New DataSet()
Dim dv As DataTable



da = New SqlDataAdapter("select id,lx,title from zhanbao where lx = '" & Trim(lx) & "'", conn)
da.Fill(ds, "table1")
dv = ds.Tables("table1")
DataGrid1.DataSource = dv
DataGrid1.DataBind()

希望对你有些帮助!

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧