在asp.net 里,连接oracle数据库
在一个Button1_Click里面完成下面3个操作(.net的.aspx.cs页面)string str1 = "insert into table1 (name1) values ('"+TextBox1.Text+"')";
OracleCommand com1 = new OracleCommand(str1, conn);
conn.Open();
com1.ExecuteNonQuery();
conn.Close();string str2 = "insert into table2 (name2) values ('"+TextBox2.Text+"')";
OracleCommand com2 = new OracleCommand(str2, conn);
conn.Open();
com2.ExecuteNonQuery();
conn.Close();string str3 = "update table3 set name3= '"+TextBox2.Text+"' ";
OracleCommand com3 = new OracleCommand(str3, conn);
conn.Open();
com3.ExecuteNonQuery();
conn.Close();如果一个语句没执行成功,回滚到原来的状态,全部执行成功了才提交,这个应该用事务处理来做吧,应该怎么写啊
在一个Button1_Click里面完成下面3个操作(.net的.aspx.cs页面)string str1 = "insert into table1 (name1) values ('"+TextBox1.Text+"')";
OracleCommand com1 = new OracleCommand(str1, conn);
conn.Open();
com1.ExecuteNonQuery();
conn.Close();string str2 = "insert into table2 (name2) values ('"+TextBox2.Text+"')";
OracleCommand com2 = new OracleCommand(str2, conn);
conn.Open();
com2.ExecuteNonQuery();
conn.Close();string str3 = "update table3 set name3= '"+TextBox2.Text+"' ";
OracleCommand com3 = new OracleCommand(str3, conn);
conn.Open();
com3.ExecuteNonQuery();
conn.Close();如果一个语句没执行成功,回滚到原来的状态,全部执行成功了才提交,这个应该用事务处理来做吧,应该怎么写啊
解决方案 »
- 应用程序和网站之间的通讯
- 讨论dhtmlxScheduler的使用
- 一个简单的window.open 就是提示语法错误,帮忙看下。
- 能框选多个文件,同时上传,上传中有进度显示,这个是怎么作到的?
- 公司人都不会,问多分组显示问题
- 各位大虾,我在asp.net做的新闻发布系统的新闻发布页面嵌入了UBB标签文件,怎么在页面运行浏览的时候看不到标签啊?
- 求一个弹出窗口的做法(在图层中放一个IFRAME)
- MVC 按钮如何跳转到web窗体
- 这个该怎么实现呢?急!!(来者都有分)
- message box 问题!
- C#连接mysql数据库的问题!!!! 马上结贴!!!!
- 我是新手,请问如何修改类的方法,在哪里修改?找不到
Oracle了解的不多,但是你现在这样写会跟 12306一样
如果还是不知道的话,你可以搜索一下李天平大神的代码生成器,里面可以生成nhibernate代码。
如果还是不知道的话,就只能具体问题具体分析了。
可以定义一个OracleTransaction对象
OracleTransaction transaction = conn.BeginTransaction();
然后把transaction赋值给三个OracleCommand对象的Transaction属性
最后用transaction.Commit();提交
失败就transaction.Rollback()回滚
可以用一个command对象提交
BEGIN
INSERT INTO TABLE1......;
INSERT INTO TABLE2......;
UPDATE TABLE3 SET ......;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
END;
<appSettings>
<add key="oracleconn" value="User ID=用户名;Password=密码;Data Source=数据库服务名;"/>
</appSettings>
public System.Data.OracleClient.OracleConnection objConn; //声明一个OracleConnection对象
public System.Data.OracleClient.OracleCommand objCmd; //声明一个OracleCommand对象protected void Page_Load(object sender, EventArgs e)
{string strcon = System.Configuration.ConfigurationManager.AppSettings["oracleconn"];
//从Web.config 文件里调用数据库连接字符串
objConn = new OracleConnection(strcon);
}
大体代码如下: OracleConnection conn = new OracleConnection("server=.,database=mytable,uid=sa,pwd=123");//创建数据库连接 OracleTransaction transaction = conn.BeginTransaction();//开始处理事务 try
{
string str1 = "insert into table1 (name1) values ('" + TextBox2.Text + "')";
OracleCommand com1 = new OracleCommand(str1, conn);
com1.ExecuteNonQuery();
string str2 = "insert into table2 (name2) values ('" + TextBox2.Text + "')";
OracleCommand com2 = new OracleCommand(str2, conn);
com2.ExecuteNonQuery();
string str3 = "update table3 set name3= '" + TextBox2.Text + "' ";
OracleCommand com3 = new OracleCommand(str3, conn);
com3.ExecuteNonQuery();
transaction.Commit();//提交事务
conn.Close();
}
catch (Exception ex)
{
transaction.Rollback();//回滚
}
string str1 = "insert into table1 (name1) values ('" + TextBox2.Text + "')";
conn.Open(); OracleCommand com1 = new OracleCommand(str1, conn);
com1.ExecuteNonQuery();
string str2 = "insert into table2 (name2) values ('" + TextBox2.Text + "')";
OracleCommand com2 = new OracleCommand(str2, conn);
com2.ExecuteNonQuery();
string str3 = "update table3 set name3= '" + TextBox2.Text + "' ";
OracleCommand com3 = new OracleCommand(str3, conn);
com3.ExecuteNonQuery(); conn.Close();
这段代码运行没问题,为什么在事务里总是回滚