您的位置:首页 > 编程语言 > Java开发

MySQL的Java连接器在Eclipse中的配置及使用(JDBC)

2010-08-05 17:31 495 查看
最近学习了一下Java 访问 MySQL 数据库的基本知识,觉得在mysql-connector-java-version.jar的Eclipse配置和数据库访问上有些小的收获。一为防止以后忘记而暂且记录下来,二也许对一些和我一样的新手有些帮助。

详细的配置和编程步骤如下:

1、要想用Java访问MySQL数据库,我们首先要下载MySQL和Java的jdbc,我试了两个较为不同的版本:mysql-connector-java-5.1.13和mysql-connector-java-3.1.11,下载地址请到MySQL的官方网站,也可在我的资源中下载。http://aduwuhan.download.csdn.net/

2、在Eclipse中导入mysql-connector-java-version.jar包(在项目名上右键,单击“属性”,再在选择Libraries,导入外部Jar即可)。

对于mysql-connector-java-3.1.11.jar,我们只需直接导入我们下载好的jar包即可),但对于mysql-connector-java-5.1.13,由于我也是第一次使用MySQL,且MySQL提供的文件是一个zip压缩文件,还提供了java源代码,因而导致在导入jar时我没有看到压缩包里的.jar文件,结果我很弱智地想直接导入zip文件(奇怪的是Eclipse也导入进去了!),显然不能运行了,结果浪费了很长时间。最后在无意中才发现的我朝思暮想的jar文件。(它就是压缩包根目录下的mysql-connector-java-5.1.13-bin.jar文件)

3、导入所需的jar包之后,我们就可以开始写程序了。编写java访问mysql数据库的程序一般需要以下几步:

3.1、首先,import必需的执行sql语言的package,如

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
//其实也可一句话搞定:import java.sql.*;


3.2、注册数据库连接驱动,为数据库操作做准备。注册方法如下:

String driverName = null;
driverName = "org.gjt.mm.mysql.Driver";   //此句话与下面这一句话效果相同
//driverName = "com.mysql.jdbc.Driver";   //从目前我所了解的情况来看上下两种方法都一样

//装载MySQL驱动
Class.forName(driverName);
//DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());    //这句话可需可不需
//DriverManager.registerDriver(new com.mysql.jdbc.Driver());      //同上


3.4、连接数据库,一般使用getConnection(url, user, pwd)方法:

public static String URL = "jdbc:mysql://localhost:3306/";   //mysql的数据库路径
private static String USER = null;   //用户名
private static String PWD = null;    //密码

private static Connection conn = null;   //数据库连接名
conn = DriverManager.getConnection(URL, USER, PWD);   //连接数据库


3.5、数据库操作。在这里我以查询数据库中sc表中的信息为例做说明。

其中sc表包括(sno, cno, score)三列,分别表示学号,课程号,分数。(注意:下面的部分只适用于sc表,对于其它表需要修改相应的列名才能使用)

Statement stmt = conn.createStatement();  //创建statement对象
ResultSet rs = stmt.executeQuery(sql);  //返回从数据中检索到的数据
while(rs.next())   //显示返回的记录
{
String sno = = rs.getString("sno");  //得到sno列的值
String cno = rs.getString("cno");    //得到cno列的值
int score = rs.getInt("score");      //得到score列的值

String str =sno + "/t" + cno + "/t" + score;
System.out.println(str);             //输出一行的结果
}

rs.close();  //关闭数据集
stmt.close();


3.6、关闭数据库

if(!conn.isClosed())   //判断数据库是否已经断开
{
conn.close();    //全局变量
conn = null;
user = null;     //局部变量
pwd = null;      //局部变量
}
else
System.out.println("数据库已关闭!/n");


注意:在以上步骤中要注意异常的抛出处理,详细情况请看下面的源程序。

4、最后附一个我自己写的java源程序。

//import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBConnect {

/**
* @param args
*/
public static String URL = "jdbc:mysql://localhost:3306/StudentManage";
private static String DBNAME = null;
/*
private static String USER = null;
private static String PWD = null;
private static String SQL = null;
*/
private static Connection conn = null;

//数据库连接函数
private static void DBConnection(String user, String pwd)
{
System.out.println("数据库连接:");
if(conn == null)  //判断数据库连接是否存在
{
try
{
String driverName = null;
driverName = "org.gjt.mm.mysql.Driver";   //此句话与下面这一句话效果相同
//	driverName = "com.mysql.jdbc.Driver";

//装载MySQL驱动
Class.forName(driverName);
//	DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());
//	DriverManager.registerDriver(new com.mysql.jdbc.Driver());    //此句话可需可不需

//连接数据库
if(user == null)
conn = DriverManager.getConnection(URL);
else
conn = DriverManager.getConnection(URL, user, pwd);

//显示连接成功
System.out.println("数据库连接成功!  用户名:" + user + "  密码:" + pwd + "/n");
}catch(ClassNotFoundException ce)
{
System.out.println("ClassNotFoundException 数据库连接失败!/n");
ce.printStackTrace();
}catch(SQLException se)
{
System.out.println("SQLException 数据库连接失败!/n");
}
}
else
System.out.println("数据库已经连接!/n");
}

//关闭数据库连接
private static void DBClose(String user, String pwd)
{
System.out.println("断开数据库连接:");
if(conn != null)
{
try
{
if(!conn.isClosed())   //判断数据库是否已经断开
{
conn.close();
conn = null;
user = null;
pwd = null;
System.out.println("数据库断开成功!");
}
else
System.out.println("数据库已关闭!/n");
}catch(SQLException se)
{
System.out.println(se.getMessage() + "数据库关闭失败!");
se.printStackTrace();
}
}
else
System.out.println("数据库连接不存在!/n");
}

//执行sql语句
private static void QueryExecute(String sql)
{
try
{
if(conn != null && !conn.isClosed())
{
Statement stmt = conn.createStatement();  //创建statement对象

if(sql == null)
System.out.println("sql语句不可为空!/n");
else
{
ResultSet rs = stmt.executeQuery(sql);  //返回从数据中检索到的数据

System.out.println("sno/tcno/tscore");

while(rs.next())   //显示返回的记录   //注意:此处只适合于sc表,对于其它表需要酌情修改列名即可
{

String sno = null;
sno = rs.getString("sno");
String cno = rs.getString("cno");  						         int score = rs.getInt("score");

String str =sno + "/t" + cno + "/t" + score;
System.out.println(str);

}
rs.close();  //关闭数据集
stmt.close();
}
}
else
System.out.println("数据库已经关闭或连接不存在!/n");
}catch(SQLException se)
{
System.out.println("sql执行失败!/n");
se.printStackTrace();
}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
String user = "manager_1";
String pwd = "manager_1";
String sql = "select * from StudentManage.sc";  //必须添上数据库名,否则出现no database select的异常

DBConnection(user, pwd);
QueryExecute(sql);
DBClose(user, pwd);

}

}


以上就是我的一小点总结,若哪位高手认为有什么问题,还望指教,我不甚感激!

Thank you!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: