jdbc 连接mysql时中的URL怎么写的

jdbc 连接mysql时中的URL怎么写的,第1张

String url="jdbc:mysql://localhost:3306/sample_db?user=root&password=your_password"

例如:

import java.sql.DriverManager

import java.sql.ResultSet

import java.sql.SQLException

import java.sql.Connection

import java.sql.Statement

 

 

public class MysqlDemo {

    public static void main(String[] args) throws Exception {

        Connection conn = null

        String sql

        // MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值

        // 避免中文乱码要指定useUnicode和characterEncoding

        // 执行数据库 *** 作之前要在数据库管理系统上创建一个数据库,名字自己定,

        // 下面语句之前就要先创建javademo数据库

        String url = "jdbc:mysql://localhost:3306/javademo?"

                + "user=root&password=root&useUnicode=true&characterEncoding=UTF8"

 

        try {

            // 之所以要使用下面这条语句,是因为要使用MySQL的驱动,所以我们要把它驱动起来,

            // 可以通过Class.forName把它加载进去,也可以通过初始化来驱动起来,下面三种形式都可以

            Class.forName("com.mysql.jdbc.Driver")// 动态加载mysql驱动

            // or:

            // com.mysql.jdbc.Driver driver = new com.mysql.jdbc.Driver()

            // or:

            // new com.mysql.jdbc.Driver()

 

            System.out.println("成功加载MySQL驱动程序")

            // 一个Connection代表一个数据库连接

            conn = DriverManager.getConnection(url)

            // Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等

            Statement stmt = conn.createStatement()

            sql = "create table student(NO char(20),name varchar(20),primary key(NO))"

            int result = stmt.executeUpdate(sql)// executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功

            if (result != -1) {

                System.out.println("创建数据表成功")

                sql = "insert into student(NO,name) values('2012001','陶伟基')"

                result = stmt.executeUpdate(sql)

                sql = "insert into student(NO,name) values('2012002','周小俊')"

                result = stmt.executeUpdate(sql)

                sql = "select * from student"

                ResultSet rs = stmt.executeQuery(sql)// executeQuery会返回结果的集合,否则返回空值

                System.out.println("学号\t姓名")

                while (rs.next()) {

                    System.out

                            .println(rs.getString(1) + "\t" + rs.getString(2))// 入如果返回的是int类型可以用getInt()

                }

            }

        } catch (SQLException e) {

            System.out.println("MySQL *** 作错误")

            e.printStackTrace()

        } catch (Exception e) {

            e.printStackTrace()

        } finally {

            conn.close()

        }

 

    }

 

}

如果数据库本身字符集就是UTF8的话,是不用添加任何东西的。

如果数据库本身不是UTF8,比如是GBK,那就需要在程序中对任何字符类型的数据进行转码。

查看数据库的字符集:

select userenv('language')from dual

Druild包获取

Maven工程中添加druid依赖包:

<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>druid</artifactId>

<version>1.0.26</version>

</dependency>

Druid使用

替换C3P0连接池

Web工程原先采用C3P0连接池的配置

<!-- 配置数据源-C3PO -->

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"

destroy-method="close">

<property name="driverClass" value="${jdbc.driverClassName}" />

<property name="jdbcUrl" value="${jdbc.url}" />

<property name="user" value="${jdbc.username}" />

<property name="password" value="${jdbc.password}" />

<property name="autoCommitOnClose" value="false" />

<property name="maxIdleTime" value="${cpool.maxIdleTime}" />

<property name="checkoutTimeout" value="${cpool.checkoutTimeout}" />

<property name="initialPoolSize" value="${cpool.minPoolSize}" />

<property name="minPoolSize" value="${cpool.minPoolSize}" />

<property name="maxPoolSize" value="${cpool.maxPoolSize}" />

<property name="acquireIncrement" value="${cpool.acquireIncrement}" />

<property name="maxIdleTimeExcessConnections" value="${cpool.maxIdleTimeExcessConnections}" />

</bean>

改成Druid连接池DruidDataSource

<!-- 配置数据源-druid -->

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"

destroy-method="close">

<property name="url" value="${jdbc.url}" />

<property name="username" value="${jdbc.username}" />

<property name="password" value="${jdbc.password}" />

<property name="maxActive" value="20" />

<property name="initialSize" value="1" />

<property name="maxWait" value="60000" />

<property name="minIdle" value="1" />

<property name="timeBetweenEvictionRunsMillis" value="60000" />

<property name="minEvictableIdleTimeMillis" value="300000" />

<property name="testWhileIdle" value="true" />

<property name="testOnBorrow" value="false" />

<property name="testOnReturn" value="false" />

<property name="poolPreparedStatements" value="true" />

<property name="maxOpenPreparedStatements" value="20" />

</bean>

StatViewServlet配置

Druid内置提供了一个StatViewServlet用于展示Druid的统计信息。

这个StatViewServlet的用途包括:

提供监控信息展示的html页面

提供监控信息的JSON API

StatViewServlet是一个标准的javax.servlet.http.HttpServlet,需要配置在你web应用中的WEB-INF/web.xml中。

<servlet>

<servlet-name>DruidStatView</servlet-name>

<servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>DruidStatView</servlet-name>

<url-pattern>/druid/*</url-pattern>

</servlet-mapping>

配置完之后,可以通过如下格式的地址在浏览器访问查看。

http:/<host>:<port>/<context>/druid


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11751441.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存