使用JDBC连接Mysql
预备工作
-
使用它有两种方式 , 最简便的就把它放在 %JAVA_HOME%/jre/lib/ext 下 ,%JAVA_HOME% 是 jdk 的安装目录 , 例如 D:/j2sdk1.4.2_15, 第二种方法就是指定 classpath, 使其指向这个 .jar 文件
下面正式开始
A.
因为会使用
Connection,Statement,ResultSet
类
,
因此需要
import java.sql.*;
B.
连接数据库中可能会抛出异常
,
所以所有语句放在
try
中
C.
定义一些常用变量
(
都可以见名识义的
)
,
方便下面的语句
,
也可以让程序更容易理解
,
具体见代码
具体步骤:
Step1:
装载驱动类
见后面代码
Step2:
连接数据库
使用
DriverManager
的静态方法
getConnection
完成
,
返回一个
connection
的对象
,
这就是连接上指定数据库的连接
,
这个连接是十分宝贵的资源
,
应及时关闭
.
Step3:
操作数据库
Statement
对象里通常放
sql
语句
,
而
ResultSet
是查询返回的结果集
,
具体见下面的代码
import
java.sql.
*
;
class linkMysqlByJDBC ... {
public static void main(String[] args)...{
try...{
String driver = "org.gjt.mm.mysql.Driver"; //驱动类
String url = "jdbc:mysql://localhost:3306/TestDB";
//连接字符串 其中TestDB是数据库名
String username = "root"; //用户名
String password = "123654"; //密码
Connection con = null;
Statement sm = null;
ResultSet rs = null;
//Step1//
Class.forName(driver);
//Step2//
con = DriverManager.getConnection(url, username, password);
//Step3//
String sql = "insert into t values('Pitt','Pitt@gmail.com')";
sm = con.createStatement();
sm.execute(sql);
String sql2 = "select * from t";
rs = sm.executeQuery(sql2);
while (rs.next()) ...{
System.out.println(rs.getString("Name") + " " +
rs.getString("Email"));
}
con.close();
}catch(Exception e)...{
e.printStackTrace();
}
}
}
class linkMysqlByJDBC ... {
public static void main(String[] args)...{
try...{
String driver = "org.gjt.mm.mysql.Driver"; //驱动类
String url = "jdbc:mysql://localhost:3306/TestDB";
//连接字符串 其中TestDB是数据库名
String username = "root"; //用户名
String password = "123654"; //密码
Connection con = null;
Statement sm = null;
ResultSet rs = null;
//Step1//
Class.forName(driver);
//Step2//
con = DriverManager.getConnection(url, username, password);
//Step3//
String sql = "insert into t values('Pitt','Pitt@gmail.com')";
sm = con.createStatement();
sm.execute(sql);
String sql2 = "select * from t";
rs = sm.executeQuery(sql2);
while (rs.next()) ...{
System.out.println(rs.getString("Name") + " " +
rs.getString("Email"));
}
con.close();
}catch(Exception e)...{
e.printStackTrace();
}
}
}
改进
why?
获取驱动类名,连接字符串,用户名,密码进行了”硬编码”,这样做有两个坏处:
A. 不安全
这些信息应该被隐藏起来,不能被别人轻易看到.
B. 麻烦而又不容易维护
一个项目中肯定很多地方都会用到这4个参数,如果每一次都重复写,很麻烦而且容易出错.
how?
A. 应用处理资源文件的类
B. 数据源技术