关于Oracle的commit操作

本文深入解析Oracle数据库中Commit操作的重要性,特别是在使用SSM框架关联Oracle数据库时的常见问题。文章指出,在Oracle中,DML语句如Insert、Update、Delete需要Commit才能生效,而DDL和DQL语句则自动提交。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于Oracle的commit操作

今天在写ssm项目时,关联oracle数据库,在查询数据库时遇到一些问题。
在oracle上能查询到数据,而通过IDEA却只查到空字符串,才发现原来是在oracle完成插入数据操作后没有进行commit,
在网上查了一下,查到以下资料:

SQL语言分为五大类:
DDL(数据定义语言) - Create、Alter、Drop 这些语句自动提交,无需用Commit提交。
DQL(数据查询语言) - Select 查询语句不存在提交问题。
DML(数据操纵语言) - Insert、Update、Delete 这些语句需要Commit才能提交。
DTL(事务控制语言) - Commit、Rollback 事务提交与回滚语句。
DCL(数据控制语言) - Grant、Revoke 授予权限与回收权限语句。

### C# 中与 Oracle 数据库进行提交操作 在 C# 应用程序中执行 Oracle 事务并最终提交这些事务涉及几个重要步骤。为了确保事务的原子性、隔离性持久性,可以利用 ADO.NET 的 `Transaction` 功能[^1]。 下面是一个完整的代码示例,展示了如何创建连接到 Oracle 数据库,在其中启动一个新的事务,执行一些 SQL 操作(如插入),最后通过调用 `Commit()` 方法来确认更改: ```csharp using System; using Oracle.ManagedDataAccess.Client; public class OracleDbExample { public void InsertBook() { string connectionString = "User Id=your_username;Password=your_password;Data Source=your_data_source"; using (var connection = new OracleConnection(connectionString)) { try { connection.Open(); // 开始新事务 var transaction = connection.BeginTransaction(); // 创建命令对象并将事务分配给它 using (var command = connection.CreateCommand()) { command.Transaction = transaction; // 设置要执行的SQL语句 command.CommandText = @"INSERT INTO book VALUES(:id, :title, :price)"; // 添加参数以防止SQL注入攻击 command.Parameters.Add(new OracleParameter("id", 1002)); command.Parameters.Add(new OracleParameter("title", "Advanced Oracle Programming")); command.Parameters.Add(new OracleParameter("price", 49.99)); int rowsAffected = command.ExecuteNonQuery(); if(rowsAffected > 0){ Console.WriteLine("记录已成功插入"); // 如果一切顺利,则提交事务 transaction.Commit(); } } } catch(Exception ex) { Console.WriteLine($"发生错误: {ex.Message}"); // 发生异常回滚事务 throw; } } } } ``` 此代码片段展示了一个简单的场景:向名为 `book` 的表中插入一条新的书籍记录,并且只有当这条记录被正确写入数据库之后才会真正保存所有的变更。如果过程中有任何地方出现问题,整个过程将会被撤销,从而保持数据的一致性[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值