Dapper操作Sql Server和MySql数据库
1. 在配置文件web.config中添加连接字符串
<connectionStrings>
<add name="sqlconnectionString" connectionString="server=127.0.0.1;database=MyDataBase;User=sa;password=123456;Connect Timeout=1000000"/>
<add name="mysqlconnectionString" connectionString="Data Source=127.0.0.1;Database=hyd;User Id=root;Password=root;CharSet=utf8;port=3306"/>
</connectionStrings>
2. 获取连接数据库对象
获取Sql Server的连接数据库对象SqlConnection
public static SqlConnection SqlConnection()
{
string sqlconnectionString = ConfigurationManager.ConnectionStrings["sqlconnectionString"].ToString();
var connection = new SqlConnection(sqlconnectionString);
connection.Open();
return connection;
}
获取MySql的连接数据库对象 MySqlConnection
public static MySqlConnection MySqlConnection()
{
string mysqlconnectionString = ConfigurationManager.ConnectionStrings["mysqlconnectionString"].ToString();
var connection = new MySqlConnection(mysqlconnectionString);
connection.Open();
return connection;
}
3. 实体类
public class Users
{
public int ID { get; set; }//自增主键
public string Name { get; set; }
public int Age { get; set; }
}
4. 增删改查
//增
using (IDbConnection conn = DapperService.MySqlConnection())
{
Users user = new Users();
user.Name = "CNKI";
user.Age = ;
string sqlCommandText = @"INSERT INTO USERS(Name,Age)VALUES(@Name,@Age)";
int result = conn.Execute(sqlCommandText, user);
}
//批量增
using (IDbConnection conn = DapperService.MySqlConnection())
{
List<Users> list = new List<Users>();
for (int i = ; i < ; i++)
{
Users user = new Users();
user.Name = "CNKI";
user.Age = ;
list.Add(user);
}
string sqlCommandText = @"INSERT INTO USERS(Name,Age)VALUES(@Name,@Age)";
int result = conn.Execute(sqlCommandText, list);
}
//删
using (IDbConnection conn = DapperService.MySqlConnection())
{
Users user = new Users();
user.ID = ;
string sqlCommandText = @"DELETE FROM USERS WHERE ID=@ID";
int result = conn.Execute(sqlCommandText, user);
}
//改
using (IDbConnection conn = DapperService.MySqlConnection())
{
Users user = new Users();
user.ID = ;
user.Name = "CNKI";
user.Age = ;
string sqlCommandText = @"UPDATE USERS SET Age=@Age WHERE ID=@ID";
int result = conn.Execute(sqlCommandText, user);
}
//查
using (IDbConnection conn = DapperService.MySqlConnection())
{
string sqlCommandText = @"SELECT * FROM USERS WHERE ID=@ID";
Users user = conn.Query<Users>(sqlCommandText, new { ID= }).FirstOrDefault();
}
//分页
using (IDbConnection conn = DapperService.MySqlConnection())
{
int pageIndex = ;
int pageSize = ;
string sqlCommandText = string.Format(@"SELECT * FROM USERS LIMIT {0},{1} ", pageIndex * pageSize, pageSize);
List<Users> user = conn.Query<Users>(sqlCommandText).ToList();
}
5. 防止Sql注入
using (IDbConnection conn = DapperService.MySqlConnection())
{
string sqlCommandText = @"SELECT * FROM USER WHERE ID=@ID";
var p = new DynamicParameters();
p.Add("@ID", );
User user = conn.Query<User>(sqlCommandText,p).FirstOrDefault();
}
这里用到了Dapper的DynamicParameters动态参数集合类,从上面可以看到可以能过Add方法加入参数。最后通过conn.Query<MSys_Admin>(sqlText, p)执行sql,,返回结果。因为用的是命令参数的形式,让sql注入无机可乘,所以这种方案是安全的。
6. 操作事物
public void TestDapperTransaction()
{
using (var conn = new MySql.Data.MySqlClient.MySqlConnection("server=localhost;Database=test;User Id=root;password=root"))
{
conn.Open();
//开户事务
IDbTransaction trans = conn.BeginTransaction();
try
{
int row = conn.Execute(@"update t set name='www.lanhusoft.com' where id=@id", new { id = }, trans);
row += conn.Execute("delete from t where id=@id", new { id = }, trans);
for (int i = ; i < ; i++)
{
conn.Execute(@"insert t(id, name) values (@id, @name)", new { id = i, name = "www.lanhusoft.com/" + i });
}
trans.Commit(); //提交事务
conn.Close();
}
catch (Exception)
{
trans.Rollback(); //回滚事务
conn.Close();
}
}
}
Dapper操作Sql Server和MySql数据库的更多相关文章
- ORM之Dapper操作Sql Server和MySql数据库
1.为什么选择Dapper 1)轻量. 2)速度快.Dapper的速度接近与IDataReader,取列表的数据超过了DataTable. 3)支持多种数据库.Dapper可以在所有Ado.net P ...
- SQL Server和MySQL数据库
导读:接下来的网上商城的项目,需要用到MySQL数据库了.这个对于我来说,是一个新接触的东西,按照惯例,在刚开始学习一个东西的时候,先从宏观上去了解它.本篇博客,先介绍SQL Server的基本内容, ...
- SQL Server 对接MySQL 数据库
1.在SQL SERVER服务器上安装MYSQL ODBC驱动; 驱动下载地址:http://dev.mysql.com/downloads/connector/odbc/ 2.安装好后,在管理工具- ...
- 使用records库操作SQL并且查询MySQL数据库
获取数据库 db = records.Database('mysql://root:xxxx@47.106.151.165/web_table?charset=utf8')注释:xxxx为数据密码 执 ...
- 代码生成器Sql Server 和 Mysql 数据库脚本
经常用到代码生成器,对于取数据脚本做个记录: #region SQL-SqlServer private string SqlTableList = @"SELECT so.name, Co ...
- 对Oracle 、SQL Server、MySQL、PostgreSQL数据库优缺点分析
对Oracle .SQL Server.MySQL.PostgreSQL数据库优缺点分析 Oracle Database Oracle Database,又名Oracle RDBMS,或简称Oracl ...
- Python 学习笔记:Python 操作 SQL Server 数据库
最近要将数据写到数据库里,学习了一下如何用 Python 来操作 SQL Server 数据库. 一.连接数据库: 首先,我们要连接 SQL Server 数据库,需要安装 pymssql 这个第三方 ...
- 数据库 SQL Server 到 MySQL 迁移方法总结
最近接手一起老项目数据库 SQL Server 到 MySQL 的迁移.因此迁移前进行了一些调查和总结.下面是一些 SQL Server 到 MySQL 的迁移方法. 1. 使用 SQLyog 迁移 ...
- SQL2005:SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法
SQL2005 还原数据库失败,提示如下: SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法 出现错误时操作步骤为:右击数据库--->任务- ...
随机推荐
- MyBatis底层实现原理: 动态代理的运用
转载:https://mp.weixin.qq.com/s/_6nyhaWX15mh3mkj8Lb0Zw Mybatis中声明一个interface接口,没有编写任何实现类,Mybatis就能返回接口 ...
- GreenPlum 数据库创建用户、文件空间、表空间、数据库
前几篇文章介绍了GreenPlum数据库的安装.启动.关闭.状态检查.登录等操作,数据库已经创建好了,接下来介绍如何使用数据库.按照习惯,需要先创建测试用户.表空间.数据库.先创建测试用户dbdrea ...
- 二十二. 安装部署Tomcat服务器、使用Tomcat部署虚拟主机、使用Varnish加速Web
web proxy web1 web2 1.安装部署Tomcat服务器 web1 1.1 使用RPM安装JDK环境 ]# yum -y install java-1.8.0-openjdk ]# ...
- Poj 2104 K-th Number(主席树&&整体二分)
K-th Number Time Limit: 20000MS Memory Limit: 65536K Case Time Limit: 2000MS Description You are wor ...
- Tomcat单独部署,控制台乱码解决方法
使用Tomcat作为容器,部署项目的时候,发现控制台总是乱码,乱码如下 打开Tomcat的部署目录 找到这一行,将UTF-8改成GBK java.util.logging.ConsoleHandler ...
- Spring Cloud Gateway(八):其它路由谓词工厂
本文基于 spring cloud gateway 2.0.1 6.基于Cookie的谓词工厂 CookieRoutePredicateFactory 是 Cookie 类型的路由断言工厂,接收两个参 ...
- 2017杭电ACM集训队单人排位赛 - 2 题解
1001,水题,直接模拟即可.比赛中开局连wa三发,因为把int写成了bool.. 1002,积分题,比赛中找到了下面这个积分公式, 但是并没什么用,,因为带入以后存在误差,估计是展开了以后出现了误差 ...
- java关于Integer设置-128到127的静态缓存
今天在一个java群里,看到有个群友问到如下为什么第一个为true,第二个为false. System.out.println(Integer.valueOf("50")==Int ...
- Centos7使用python3连接inception报错解决办法
inception支持mysqldb库但不支持pymysql库,无奈mysqldb库不兼容py3,直接使用pymysql 连接inception报错如下: ValueError: invalid li ...
- qt mvc1
mvc是经典的三层结构,将数据,视图和逻辑分离.Qt中的Model/View框架,实现了这个模式.在Qt中这个模式设计到三个类,model类,view类和delegate类.model类保存数据,vi ...