C#操作mysql数据库事务以及获取插入数据ID的方法
2016-11-11 18:38
861 查看
代码如下:
/// <summary>
/// 事务测试
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public int ServiceTest(string str)
{
int ret=0;
using (OdbcConnection conn = new OdbcConnection(str))
{
conn.Open();
OdbcCommand command = conn.CreateCommand();
OdbcTransaction transaction;
//启动事务
transaction = conn.BeginTransaction();
command.Connection = conn;
command.Transaction = transaction;
try
{
//获取插入数据后的ID
command.CommandText = "insert into com_user (`username`,`password`,`logintime`,`loginip`,`lock`) values('bbb','bbb',222,'bbb',0);SELECT LAST_INSERT_ID();";//SELECT LAST_INSERT_ID()是mysql提供的方法
int aa = command.ExecuteNonQuery();
//获取插入的ID
int newId = Convert.ToInt32(command.ExecuteScalar());
//下面的sql语句是错误的,为了catch错误回滚
command.CommandText = "insert into com_user_1 (`username`,`password`,`logintime`,`loginip`,`lock`) values('aaa','aaa',111,'aaa',0)";
command.ExecuteNonQuery();
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
ret = -1;
}
finally
{
conn.Close();
}
}
return ret;
}
1、刚开始的时候事务无法回滚,主要原因是数据库表引擎设置问题,需要设置成InnoDB模式。
2、数据库表结构:
。
/// <summary>
/// 事务测试
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public int ServiceTest(string str)
{
int ret=0;
using (OdbcConnection conn = new OdbcConnection(str))
{
conn.Open();
OdbcCommand command = conn.CreateCommand();
OdbcTransaction transaction;
//启动事务
transaction = conn.BeginTransaction();
command.Connection = conn;
command.Transaction = transaction;
try
{
//获取插入数据后的ID
command.CommandText = "insert into com_user (`username`,`password`,`logintime`,`loginip`,`lock`) values('bbb','bbb',222,'bbb',0);SELECT LAST_INSERT_ID();";//SELECT LAST_INSERT_ID()是mysql提供的方法
int aa = command.ExecuteNonQuery();
//获取插入的ID
int newId = Convert.ToInt32(command.ExecuteScalar());
//下面的sql语句是错误的,为了catch错误回滚
command.CommandText = "insert into com_user_1 (`username`,`password`,`logintime`,`loginip`,`lock`) values('aaa','aaa',111,'aaa',0)";
command.ExecuteNonQuery();
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
ret = -1;
}
finally
{
conn.Close();
}
}
return ret;
}
1、刚开始的时候事务无法回滚,主要原因是数据库表引擎设置问题,需要设置成InnoDB模式。
2、数据库表结构:
。
相关文章推荐
- C#中使用MySqlCommand执行插入语句后获取该数据主键id值的方法
- C#连接mysql数据库插入数据后获取自增长主键ID值
- C#连接mysql数据库插入数据后获取自增长主键ID值
- 获取刚插入数据的id的方法
- C#操作DataTable方法实现过滤、取前N条数据及获取指定列数据列表的方法
- C#连接mysql数据库 及向表中插入数据的方法
- php使用PDO事务配合表格读取大量数据插入操作实现方法
- Oracle插入数据并获取自增长序列ID方法
- 【转载】在mysql中获取insert插入数据的id的方法SELECT LAST_INSERT_ID();
- vue操作下拉选择器获取选择的数据的id方法
- 初识和利用Servlet,获取和显示页面提交的数据以及对MySQL数据库的简单操作 7.04
- 插入数据后, 获取该记录id的方法
- SQLserver 获取数据表新插入记录ID方法---SCOPE_IDENTITY与@@INDENTITY的区别
- .net实现oracle数据库中获取新插入数据的id的方法
- C#获取cpu序列号 硬盘ID 网卡硬地址以及操作注册表
- .net实现oracle数据库中获取新插入数据的id的方法
- C#中一个保持事务原子性的方法,插入数据失败回滚
- c#批量插入数据到数据库【支持事务操作】
- C#操作MongoDB数据库并获取数据方法
- SSM框架day02-MyBatis——022对单表的CURD操作-获取新插入数据的id