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数据库的更多相关文章

  1. ORM之Dapper操作Sql Server和MySql数据库

    1.为什么选择Dapper 1)轻量. 2)速度快.Dapper的速度接近与IDataReader,取列表的数据超过了DataTable. 3)支持多种数据库.Dapper可以在所有Ado.net P ...

  2. SQL Server和MySQL数据库

    导读:接下来的网上商城的项目,需要用到MySQL数据库了.这个对于我来说,是一个新接触的东西,按照惯例,在刚开始学习一个东西的时候,先从宏观上去了解它.本篇博客,先介绍SQL Server的基本内容, ...

  3. SQL Server 对接MySQL 数据库

    1.在SQL SERVER服务器上安装MYSQL ODBC驱动; 驱动下载地址:http://dev.mysql.com/downloads/connector/odbc/ 2.安装好后,在管理工具- ...

  4. 使用records库操作SQL并且查询MySQL数据库

    获取数据库 db = records.Database('mysql://root:xxxx@47.106.151.165/web_table?charset=utf8')注释:xxxx为数据密码 执 ...

  5. 代码生成器Sql Server 和 Mysql 数据库脚本

    经常用到代码生成器,对于取数据脚本做个记录: #region SQL-SqlServer private string SqlTableList = @"SELECT so.name, Co ...

  6. 对Oracle 、SQL Server、MySQL、PostgreSQL数据库优缺点分析

    对Oracle .SQL Server.MySQL.PostgreSQL数据库优缺点分析 Oracle Database Oracle Database,又名Oracle RDBMS,或简称Oracl ...

  7. Python 学习笔记:Python 操作 SQL Server 数据库

    最近要将数据写到数据库里,学习了一下如何用 Python 来操作 SQL Server 数据库. 一.连接数据库: 首先,我们要连接 SQL Server 数据库,需要安装 pymssql 这个第三方 ...

  8. 数据库 SQL Server 到 MySQL 迁移方法总结

    最近接手一起老项目数据库 SQL Server 到 MySQL 的迁移.因此迁移前进行了一些调查和总结.下面是一些 SQL Server 到 MySQL 的迁移方法. 1. 使用 SQLyog 迁移 ...

  9. SQL2005:SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法

    SQL2005 还原数据库失败,提示如下: SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法 出现错误时操作步骤为:右击数据库--->任务- ...

随机推荐

  1. GreenPlum 锁表以及解除锁定

    最近遇到truncate表,无法清理的情况,在master节点查看加锁情况,并未加锁这种情况极有可能是segment节点相关表加了锁,所以遇到这种情况除了排查master节点的锁,所有的segment ...

  2. 073_使用 shell 脚本打印如下图形

    #!/bin/bash #打印第一组图片#for(())为类 C 语言的语法格式,也可以使用 for i in;do;done 的格式替换#for((i=1;i<=9;i++))循环会执行 9 ...

  3. leetcode解题报告(20):Rotate Array

    描述 Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the arr ...

  4. vim命令整理

    最近使用vim比较多,整理一下!

  5. P1966 火柴排队——逆序对(归并,树状数组)

    P1966 火柴排队 很好的逆序对板子题: 求的是(x1-x2)*(x1-x2)的最小值: x1*x1+x2*x2-2*x1*x2 让x1*x2最大即可: 可以证明将b,c数组排序后,一一对应的状态是 ...

  6. Spring Cloud Gateway(七):路由谓词工厂WeightRoutePredicateFactory

    本文基于 spring cloud gateway 2.0.1 接上文 5.基于路由权重(weigth)的谓词工厂 Spring Cloud Gateway 提供了基于路由权重的断言工厂,配置时指定分 ...

  7. Poseidon 系统是一个日志搜索平台——认证看链接ppt,本质是索引的倒排列表和原始日志数据都存在HDFS,而文档和倒排的元数据都在NOSQL里,同时针对单个filed都使用了独立索引,使用MR来索引和搜索

    Poseidon 系统是一个日志搜索平台,可以在百万亿条.100PB 大小的日志数据中快速分析和检索.360 公司是一个安全公司,在追踪 APT(高级持续威胁)事件,经常需要在海量的历史日志数据中检索 ...

  8. Windows下的apache tomcat安装与配置

    在官网http://tomcat.apache.org下载apache tomcat,我下载的是7可以自行选择版本: 解压缩,把解压文件放入C盘根目录下 配置环境变量,变量名位CATLINA_HOME ...

  9. 2018-2019-2 《网络对抗技术》Exp9 Web安全基础 20165114

    Exp9 Web安全基础 目录 一.实验内容 二.基础问题回答 (1)SQL注入攻击原理,如何防御 (2)XSS攻击的原理,如何防御 (3)CSRF攻击原理,如何防御 三.实践过程记录 3.1 注入缺 ...

  10. [Ubuntu] A start job is running for...interfaces

    CPU:RK3288 系统:Linux 移植 Ubuntu 16.04 到嵌入式平台,如果以太网有问题,在这里会耗时大约5分钟 开机后可以修改 Ubuntu 配置来缩短时间 打开下面的文件,可以看到最 ...