跨数据库连接类(System.Data.Common)

a.net为为们们提供了逐一数据库的链接.
比如说MSSQL就是System.Data.SqlClient
         Oracle就是System.Data.OracleClient
         MySql就是MySql.Data.MySqlClient
旁的相应就是的了.还有呀DB2.还有等等一些.
原先我们举行跨数据库的时段用底是反射.只不过看到网上广大评论说反射效率不怎么好
故而近年来在研讨System.Data.Common
为尽管是通用的多寡链接类吧

  近来在商店落实,接触到无数初的家伙框架,今天见识到了一个新的家伙,它的留存类似是在理的,但是以前便从来不遇到这东西。那便是swagger,它的功能就是将你写的controller的情还聚集到齐好测试。或者说是把接口都围拢合在一起。什么样的感觉?看图就是了解。

理所当然这里只是做测试.没有举行最多的包,
此是自的目录结构
图片 1

图片 2

话不多说.上代码
自首先步还是在web.config里面写及数链接语句.
此处是最最关键的
自此测试的只有mysql,mssql

  有了其,感觉便宜了广大,一个凡是不用打开postman之类的测试工具了,另一方面连路径参数什么的且不要写了,让人口兴奋。

图片 3    <connectionStrings>
图片 4        <add name=”ConnectionString1″ connectionString=”Data Source=LIUJU;Initial Catalog=MSPetShop4;Persist Security Info=True;User ID=sa;Password=***” providerName=”System.Data.SqlClient”/>
图片 5        <add name=”ConnectionString” connectionString=”server=localhost;user id=root;password=***;persist security info=True;database=mspetshop4″ providerName=”MySql.Data.MySqlClient”/>
图片 6    </connectionStrings>

  介绍一下怎么设置,我用的凡maven项目,maven项目于start.spring.io那里生成什么的且可,至少加个web,然后在pom.xml添加上下面的代码:

此地的name你自己设置一个名就是足以了.connectionString就是数据库链接语句.这里没有呀好说的
不过着重的虽是后的providerName这里虽是写及你数据库要引入的名目空间.这样程序才见面知道乃用底是什么数据库

    <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.7.0</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.7.0</version>
        </dependency>
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>2.9.9</version>
        </dependency>

下这里我便是描写的一个webConfig的扶类.

  这把我遇上需要的都助长了。包括了有的急需以的jar包什么的。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;

  就写单关于其的布文件:  

namespace DBHelper.Library
{
    public static class WebConfigHelper
    {
        private readonly static string DBConnectionString = ConfigurationManager.ConnectionStrings[“ConnectionString”].ConnectionString;
        private readonly static string DBProviderName = ConfigurationManager.ConnectionStrings[“ConnectionString”].ProviderName;
        public static string GetConnectionString
        {
            get { return DBConnectionString; }
        }
        public static string GetProviderName
        {
            get { return DBProviderName; }
        }
    }
}

@Configuration
@EnableWebMvc
@EnableSwagger2
@ComponentScan(basePackages = {"com.example.swagger.swagger"})
public class SwaggerConfig {

    ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("XXXX Web Selfservice APIs")
                .description("")
                .license("")
                .licenseUrl("")
                .termsOfServiceUrl("")
                .version("1.0.0")
                .build();
    }

    @Bean
    public Docket customImplementation() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.swagger.swagger"))
                .build()
                .directModelSubstitute(org.joda.time.LocalDate.class, java.sql.Date.class)
                .directModelSubstitute(org.joda.time.DateTime.class, java.util.Date.class)
                .apiInfo(apiInfo());
    }
}

好.下面就是重大的了

  下一致步是使长它在项目之配置文件:

using System;
using System.Data;
using System.Data.Common;
using System.Collections.Generic;
using System.Linq;
using System.Text;

@Configuration
public class WebMVCConfig extends WebMvcConfigurerAdapter{

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");

    }
}

namespace DBHelper.Library
{
    public static class DataAccessHelper
    {
        /// <summary>
        /// 创建DbCommand对象
        /// </summary>
        /// <returns>DbCommand对象</returns>
        public static DbCommand GetCommand()
        {
            //得到webConfig里面的只要引用的名目空间
            string DBProviderName = WebConfigHelper.GetProviderName;
            //得到webConfig里面的链接字符串
            string DBConnectionString = WebConfigHelper.GetConnectionString;

   最后就是写一个controller了:

            //数据库工厂类为之数据库创建一个数据库链接对象
            DbProviderFactory dpf = DbProviderFactories.GetFactory(DBProviderName);
            //创建Connection
            DbConnection conn = dpf.CreateConnection();
            conn.ConnectionString = DBConnectionString;
            //创建Command
            DbCommand comm = conn.CreateCommand();
            comm.CommandType = CommandType.Text;
            return comm;
        }

@Api(value = "controller信息")
@RestController
@EnableAutoConfiguration
@RequestMapping(value = "/api/index")
public class indexController {

    @ApiOperation(value = "测试swagger", notes = "这是一条注意信息")
    @RequestMapping("/hello")
    public String hello() {
        return "hello";
    }

}

        /// <summary>
        /// 执行查询,返回datatable
        /// </summary>
        /// <param name=”command”></param>
        /// <returns></returns>
        public static DataTable ExecuteSelectCommand(DbCommand command)
        {
            DataTable table;
            try
            {
                if (command.Connection.State != ConnectionState.Open)
                {
                    command.Connection.Open();
                }
                DbDataReader reader = command.ExecuteReader();
                table = new DataTable();
                table.Load(reader);
                reader.Close();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }
            finally
            {
                command.Connection.Close();
            }
            return table;

   现在可以打开网址:http://localhost:8080/swagger-ui.html,见证它的神奇。

        }
        /// <summary>
        /// 执行update insert del操作
        /// </summary>
        /// <param name=”command”></param>
        /// <returns>返回影响行数</returns>
        public static int ExecuteNonQuery(DbCommand command)
        {
            int affectRows = -1;
            try
            {
                if (command.Connection.State != ConnectionState.Open)
                {
                    command.Connection.Open();
                }
                affectRows = command.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }
            finally
            {
                command.Connection.Close();
            }
            return affectRows;
        }
        /// <summary>
        /// 返回第一排列第一推行
        /// </summary>
        /// <param name=”command”></param>
        /// <returns></returns>
        public static string ExecuteScalar(DbCommand command)
        {
            string value = “”;
            try
            {
                if (command.Connection.State != ConnectionState.Open)
                {
                    command.Connection.Open();
                }
                value = command.ExecuteScalar().ToString();

            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message, ex);
            }
            finally
            {
                command.Connection.Close();
            }
            return value;
        }
    }
}

如此这般您便好使配置一下webConfig程序即使活动知道你链接的是啊数据库,
即得自动吗卿创造一个数据库链接对象了.

动方式

        protected void Page_Load(object sender, EventArgs e)
        {
            DbCommand dc = DataAccessHelper.GetCommand();
            dc.CommandText = “SELECT ProductId, CategoryId, Name, Descn FROM Product”;
            DataTable dt = DataAccessHelper.ExecuteSelectCommand(dc);
            GridView1.DataSource = dt;
            GridView1.DataBind();
        }

运转结果
图片 7
少数单数据库都测试正常

参考网址
http://www.cnblogs.com/freegarden/archive/2009/09/25/1574044.html
夫以下载地址
http://files.cnblogs.com/liuju150/DBHelper20091008124542.zip