首页 > 代码库 > 通过java连接mysql总结

通过java连接mysql总结

简介:通过java连接mysql需要用到JDBC驱动。JDBC驱动安装在mysql-client客户端,mysql-server服务端不需要安装。

  • 数据库安装初始化略。测试用到的命令:

1、创建测试用库,表,字段:

create database score;

use score;

create table score(id nvarchar(10),stu_id nvarchar(10),c_name nvarchar(10),grade nvarchar(10));

insert into score values(15,10,‘ENGLISH‘,14);

2、授权远程访问:

mysql> grant ALL PRIVILEGES ON *.* to root@"%" identified by "mysql" ;

mysql>FLUSH PRIVILEGES

技术分享

 

  • Java安装略,环境变量设置:

# vim /etc/profile

export JAVA_HOME=/usr/java/jdk1.7.0_79

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

技术分享

  • JDBC下载详见mysql官网,安装即环境变量设置:

方法一

# vim /etc/profile

export CLASSPATH=.:/devops/mysql-connector-java-5.1.40/mysql-connector-java-5.1.40-bin.jar

技术分享

方法二

如果是tomcat等java应用则应参考官方文档查看如何安装驱动,比如解压放在{$TOMCAT}/lib下。

方法三

将其放于JDK安装目录下的lib目录下(也可以是其他位置)

例如我的JDK安装在/usr/java/jdk1.7.0_71目录下,那么我将其放在/usr/java/jdk1.7.0_71/lib目录下

然后修改环境变量CLASSPATH的值,编辑/etc/profile文件,在CLASSPATH值的末尾加上mysql-connector-java的路径,并使用冒号 :隔开

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/mysql-connector-java-5.1.18-bin.jar

  • 测试:

编译工具准备

javac,java。安装java-devel包即可。

编译

javac DB.java

运行

java DB

技术分享
  • 脚本:
  • ===================================================================================

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

public class DB {

public static void main(String[] args) {

String url = "jdbc:mysql://10.1.37.24:3306/score";

String user = "root";

String passwd = "123456";

String sql1 = "SELECT * FROM score";

String sql2 = "INSERT INTO score VALUES(25,9205,‘ENGLISH‘,84);";

String sql3 = "UPDATE score SET grade=80 WHERE id=25";

try {

Class.forName("com.mysql.jdbc.Driver");

Connection con = DriverManager.getConnection(url, user, passwd);

System.out.println("数据库连接成功!");

Statement stat = con.createStatement();

ResultSet rs = stat.executeQuery(sql1);

while(rs.next()){

int id = rs.getInt("id");

int stu_id = rs.getInt("stu_id");

String course = rs.getString("c_name");

int grade = rs.getInt("grade");

System.out.println(id + " " + stu_id + " " + course + " " + grade);

}

int i = stat.executeUpdate(sql2);

if(i != 0){

System.out.println("INSERT语句执行成功!");

}

int j = stat.executeUpdate(sql3);

if(j != 0){

System.out.println("UPDATE语句执行成功!");

}

if(rs != null){

rs.close();

rs = null;

}

if(stat != null){

stat.close();

stat = null;

}

if(con != null){

con.close();

con = null;

}

} catch (ClassNotFoundException e) {

System.out.println("没有找到数据库驱动!");

} catch (SQLException e) {

System.out.println("连接数据库服务器失败!");

}

}

}

  • ===================================================================================

技术分享

技术分享

 

  • 拓展:JDBC与ODBC的区别:

JDBC与ODBC都可以实现类似的功能,但JDBC与ODBC的区别是他们的开发架构不同,其实现细节上也有所差异。

谈到JDBC与ODBC的区别,JDBC和ODBC其实都是用来连接数据库的启动程序。ODBC中文姓名叫做开放数据库互联,是 Microsoft性能开发的开放服务框架中有关数据库的一个的组成部份,它建立一组有关的规则,并帮助了一组对数据库访问的达标实际运用程序编程接口。简单的说,ODBC那是实际运用程序与数据库系统停止交互的道具。一个的给予ODBC的实际运用程序对数据库的操作不依赖于的数据库系统,不支持与数据库管理系统打交道,所有的数据库操作由对应的数据库系统的ODBC驱动程序来完成。从而没成绩出现以同一的方法来处理所有的数据库。

而JDBC与ODBC类似,也是一个的实际运用程序与数据库停止通信的中间个人公司。只是她们的开发商不相同而已。JDBC是由Sun个人公司向联系型数据库系统厂商帮助JDBC的规格与需求;然后各大厂商遵循达标规格设计出符合自己数据库产业商品的JDBC驱动程序。虽然JDBC与ODBC都没成绩出现类似的功能,但是她们的开发架构不相同,其出现细节上也有所差异。为此数据库编程必需要了解这方面的差异,并在打工中根据实际情况来选取合适的数据库驱动程序。

   JDBCODBC的区别:JDBC的优点。

JDBC实际运用程序接口是JAVA程序语言内针对数据存取所涉及的程序开发接口,其内部是由许多类与接口构成。而ODBC则是由C语言来开发的。由于两者开发平台的不相同,为此开发不相同种各自的特点也就传递到了这连个数据库启动程序中。根据笔者的了解,相对ODBC数据库启动程序来说,JDBC 有如下几个优点。若笔者概括的不够全方面的话,欢迎来补全。

1JDBC要比ODBC简易理解。学过编程的也许会有一个的直观的感想,那是JAVA语言要比C语言好学的多。由于JAVA语言的设计思路是面向对象的,跟人的认识思维较量接近,为此较量简易被人接受,研究起来也相对简易一点。而C语言则就较量抽象了,跟人的认识规则有确定的距离。为此她们开发出来的产业商品也有类似的特点。在ODBC中,虽然没成绩出现与数据库的交互,但是出现起来较量复杂。如一个的简单的查询,也需求分为好几块内容;而在 ODBC驱动程序内部再去停止整合,停止一些复杂的操作。这不仅降低了数据库启动程序的性能,而且也给程序开发者开发实际运用程序带来了确定的负面效果。而JDBC数据库启动程序在设计的时间就包含了大部份基本数据操作功能,为此在编写一些常规的数据库操作语句时,如查询、更新等等,其所需求的源代码比 ODBC要少的多。故从这方面来说,JDBC数据库启动程序要比ODBC简易理解。

2JDBC数据库驱动程序是面向对象的,完全遵循JAVA语言的优良特性。通常情况下,只要有JAVA车功能需设计基础的用户都没成绩在最短时间内了解JDBC驱动程序的架构,较量简易上手,没成绩轻而易举的开发出强悍的数据库实际运用程序。而ODBC的话,由于其内部功能复杂,源代码编写要求高。为此即使是一个的C语言的高手,仍然需求花费不少的时间去了解那个数据库启动程序;在编写源代码的时间,还离不开有关的参考书本。

3JDBC的移植性要比ODBC要好。通常情况下,安装完ODBC驱动程序之后,还需求经过确定的配置才能够应用。而不相同的配置在不相同数据库服务器之间不能够通用。也那是说,装一次需求配置一次。但是JDBC数据库驱动程序则不相同。假如采用JDBC数据库驱动程序的话,则知需求选取适当的 JDBC数据库驱动程序,就不需求停止额外的配置。在安装过程中,JDBC数据库驱动程序会自己完成有关的配置。为此JDBC的移植性要比ODBC要好。

总之JDBCODBC都是数据库的启动程序,它们的本质是相同的,都是为了处理SQL语句而设计的。而且JDBC在设计的时间,其也是在ODBC 的基础上停止设计的,并保留了ODBC数据库驱动程序的部份功能。或者说,咱们没成绩把JDBC看作是ODBC的另一个的高级版本也未尝不可。JDBC主要在操作上、友好性上做了确定的改进。

JDBCODBC的区别:什么时间采用JDBC?

虽然说JDBC数据库启动程序比ODBC来说具有不少的优点,但是也并不是说在所有的情况下采用JDBC数据库启动程序都能够起到不错的效果。数据库编程还需求根据企业的实际实际运用环境来停止选取。通常情况下,假如符合下面几种情况的任何一种,笔者意见采用JDBC数据库驱动程序。

一是采用Oracle个人公司的Oracle JDeveloper 10G来开发实际运用程序。JDeveloper 10G是Oracle个人公司帮助的一个的可视化的开发环境。没成绩帮助数据库编程与开发方便的完成一些复杂的功能。如数据库开发没成绩借那个道具来设计 WEB实际运用程序的网页运行程序;如没成绩用来开发业务服务层组件;如没成绩在JSP与JClient实际运用程序内出现数据绑定功能等等。特别是在利用那个道具开发业务服务层组件的时间,没成绩直接浏览与存取业务组件所对应的数据。数据库开发不用等到实际运用程序撰写好后才测试数据库的存取功能。显然那个特性让数据库开发在开发数据库实际运用程序的时间格外的便利。而为了配合那个开发道具,Oracle个人公司专门开发了对应的JDBC驱动程序。为此假如数据库开发采用JDeveloper开发道具的话,那么采用JDBC要比采用ODBC的兼容性要好。所以假如采用了这种开发道具的话,最好能够采用 JDBC数据库启动程序。

二是假如实际运用程序采用的是JAVA开发平台的话,那么最好应用JDBC数据库启动程序。其实JDeveloper采用的也是JAVA开发平台。这主要是由于假如JAVA程序直接调用ODBC的C语言实际运用程序接口时,较量简易产生安全方面的难点。如Java语言是不采用指针的(由于指针的处理效率较量慢),而ODBC所采用的C语言却应用了大量的指针。为此假如应用JAVA语言平台来开发数据库实际运用程序,若采用ODBC数据库驱动程序的话,就不那么合适了。另外由于JDBC也是JAVA语言开发的,所以其兼容性也会好许多。为此笔者意见,假如数据库开发采用的是JAVA语言开发平台的话,那么最好采用JDBC驱动程序,而不是ODBC驱动程序。

在更多相关的情况下,数据库编程与开发没成绩根据自己的习惯来选取合适的数据库驱动程序。

JDBCODBC的区别:能否从ODBC顺利过渡到JDBC?

也许数据库编程以前采用的是ODBC驱动程序,而假如数据库编程目前需求采用JDBC驱动程序,那么能否出现顺利过渡呢?正确回答是肯定的。在 JDBC驱动程序中有一类叫作JDBC-ODBC桥接启动程序。这种类别的JDBC数据库驱动程序其底层是经过ODBC驱动程序来连接数据库的。假如原先的实际运用程序是基于ODBC数据库驱动程序的,或者数据库没有帮助对应的JDBC驱动程序,则数据库编程没成绩利用JDBC-ODBC桥接驱动程序来出现。也那是说,桥接驱动程序没成绩利用现有的ODBC驱动程序来存取联系型数据库。为此者不仅没成绩保留先前的开发架构(经过ODBC来存取数据),还没成绩立即应用JAVA作为新的开发环境,从而出现ODBC数据库驱动程序到JDBC的顺利转型。

不过在采用这种桥接驱动程序的时间,需求留意几个难点。一是那个桥接驱动程序仍然需求用到ODBC数据库驱动程序。由于桥接驱动程序直接联系的对象是ODBC驱动程序,然后再经过ODBC驱动程序去访问数据库。为此在客户端必需先安装并配置好ODBC驱动程序。假如采用的是三层式的开发框架,也需求安装ODBC驱动程序。其次,在这种模式下,实际运用程序先调用JDBC,然后再经过JDBC调用ODBC,最后再跟数据库停止通信。显然其中间多了几个环节。由于其中间环节较量多,但数据访问出现难点的时间,就不怎样好查难点。这就好像一道水管,假如中间的接口多了的话,则除了漏水的几率就较量高。假如真的除了漏水的话,则查询漏水点的时间也会较量困难。为此笔者以为,采用桥接类别的JDBC驱动程序只是权宜之计。在适当的时间,数据库开发还是需求调整原先的开发架构,全部都转到JDBC驱动程序上来。桥接程序只是为数据库开发争取确定的时间。虽然那个转型过程中的阵痛是较量痛的,但确是不可避免的。长痛不如短痛,笔者意见数据库开发还是及早停止过渡为好。并在估计的情况下,把以前的开发架构也停止调整,以采用真正意义上的JDBC驱动程序。

通过java连接mysql总结