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 = 38;
        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 = 0; i < 5; i++)
        {
            Users user = new Users();
            user.Name = "CNKI";
            user.Age = 38;
            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 = 1;
        string sqlCommandText = @"DELETE FROM USERS WHERE [email protected]";
        int result = conn.Execute(sqlCommandText, user);
    }
    //改
    using (IDbConnection conn = DapperService.MySqlConnection())
    {
        Users user = new Users();
        user.ID = 2;
        user.Name = "CNKI";
        user.Age = 18;
        string sqlCommandText = @"UPDATE USERS SET [email protected] WHERE [email protected]";
        int result = conn.Execute(sqlCommandText, user);
    }
    //查
    using (IDbConnection conn = DapperService.MySqlConnection())
    {
        string sqlCommandText = @"SELECT * FROM USERS WHERE [email protected]";
        Users user = conn.Query<Users>(sqlCommandText, new  { ID=2 }).FirstOrDefault();
    }
    //分页
    using (IDbConnection conn = DapperService.MySqlConnection())
    {
        int pageIndex = 0;
        int pageSize = 2;
        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 [email protected]";
     var p = new DynamicParameters();
     p.Add("@ID", 1);
     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 [email protected]", new { id = 3 }, trans);
               row += conn.Execute("delete from t where [email protected]", new { id = 5 }, trans);
               for (int i = 0; i < 100; 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();
           }
      }
}

原文地址:https://www.cnblogs.com/li150dan/p/10101782.html

时间: 2024-10-07 06:29:11

Dapper操作Sql Server和MySql数据库的相关文章

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

1.为什么选择Dapper 1)轻量. 2)速度快.Dapper的速度接近与IDataReader,取列表的数据超过了DataTable. 3)支持多种数据库.Dapper可以在所有Ado.net Providers下工作,包括sqlite, sqlce, firebird, oracle, MySQL, PostgreSQL and SQL Server 4)可以映射一对一,一对多,多对多等多种关系. 5)性能高.通过Emit反射IDataReader的序列队列,来快速的得到和产生对象,性能不

sql server与mysql数据库的链接

链接的方法:通过OLEDB接口链接 链接工具:在本地[管理工具]选择[ODBC项]在此创建mysql的数据库链. mysql的设置: 创建一个用户供sql server使用 要求:此用户拥有访问mysql指定数据库的权限 sql server的设置:在sql server数据库中创正式创建mysql库的DBLINK步骤: 选择[服务器对象]下的[链接服务器]右击鼠标选择"新建链接服务器"如图所示一步一步配置即可: 创建完成后通过以下SQL语句测试是否能正常连接: select *fro

SQL Server 对接MySQL 数据库

1.在SQL SERVER服务器上安装MYSQL ODBC驱动; 驱动下载地址:http://dev.mysql.com/downloads/connector/odbc/ 2.安装好后,在管理工具-ODBC数据源-系统DSN-添加-选择 MYSQL ODBC 5.3 Unicode DRIVER-完成  会跳出来MYSQL连接参数 Data Source Name:数据源名称 Decription:描述,随便写 Server:MYSQL服务器的IP Port:MYSQL的端口,默认的是3306

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

#SQL SERVER        private string SqlTableList = @"SELECT                                                     so.name,                                                    Convert( VARCHAR(10), ep.[value]) AS [description]                              

[转]C#操作SQL Server数据库

转自:C#操作SQL Server数据库 1.概述 ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据库: 第二,建立SqlCommand对象,负责SQL语句的执行和存储过程的调用: 第三,对SQL或存储过程执行后返回的“结果”进行操作. 对返回“结果”的操作可以分为两类: 一是用SqlDataReader直接一行一行的读取数据集: 二是DataSet联合SqlDataAdapter来操作数据库. 两者比较: SqlDataRead

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

最近接手一起老项目数据库 SQL Server 到 MySQL 的迁移.因此迁移前进行了一些调查和总结.下面是一些 SQL Server 到 MySQL 的迁移方法. 1. 使用 SQLyog 迁移 具体方法可以参加:http://www.cnblogs.com/gaizai/p/3237907.html 优点:该迁移方法很简单,灵活,迁移时,可以进行字段的修改,比如在sql server中原来是datetime,然后迁移到mysql时你可以配置成timestamp: 成功率很高: 缺点:迁移很

C#操作SQL Server数据库

C#操作SQL Server数据库 1.概述 2.连接字符串的写法 3.SqlConnection对象 4.SqlCommand对象 5.SqlDataReader对象 6.DataSet对象 7.释放资源 1.概述 ado.net提供了丰富的数据库操作,这些操作可以分为三个步骤: 第一,使用SqlConnection对象连接数据库: 第二,建立SqlCommand对象,负责SQL语句的执行和存储过程的调用: 第三,对SQL或存储过程执行后返回的"结果"进行操作. 对返回"结

数据库SQL Server2012笔记(七)——java 程序操作sql server

1.crud(增删改查)介绍:create/retrieve/update/delete 2.JDBC介绍 1)JDBC(java database connectivity,java数据库连接) 2)是一种用于运行SQL语句的java  API,可为多种关系数据库提供统一訪问.由一组用Java语言编写的类和接口组成. 3)JDBC为工具/数据库开发者提供了一个标准的API,据此可构建更高级的工具和接口,是数据库开发者可以用纯Java API编写数据库应用程序. 4)JDBC也是闪避表明. 3.

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

SQL2005 还原数据库失败,提示如下: SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法 出现错误时操作步骤为:右击数据库--->任务--->还原--->文件和文件组--->源设备(选择备份文件)--->指定备份文件位置--->添加选定文件.在“还原文件和文件组”对话框中点击“确定”按钮,即出现上面显示的错误. 正确的步骤为: 右击数据库--->任务--->还原--->数据库--->源设备