使用JDBC连接mysql数据库
JDBC简介:
JDBC全称为JAVA Database Connectivity, 是Sun公司提供java数据库连接的规范.有了Sun公司提供
的api我们在学习和开发过程中就可以很方便去调用这些接口方法,而不用自己另外去写应用程序去连接数据库
接下来简要地介绍一下java连接mysql的一般步骤
连接步骤
- 加载驱动,在加载驱动之前去官网下载相应的jar包,参考官方文档给出加载驱动的代码
Class.forName("com.mysql.jdbc.Driver").newInstance();
如果是最新版本可以不用.newInstance()实例化 - 建立连接.官方文档给出的代码然而在编写过程中出现了一些乱七八糟的错误,根据提示我把连接代码修改为第二种才通过
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test?" +
"user=monty&password=greatsqldb")
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/world?useUnicode=true&"+
"serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false", "root", "123");
这是最容易出错的一步,这步完成之后可以说我们已经连上数据库了
3. 执行sql语句
String sql = "select * from countrylanguage";
ResultSet rs = stmt.executeQuery(sql);
rs返回的是一个容器类型,我们可以遍历容器得到从数据库中得到的数据
4. 释放资源. 事务操作完成之后我们应该去关闭对应的流来释放资源,记住遵循先开后关的原则if(rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
例子
最后给出我查询mysql自带world数据库的worldlanguage表的一个小demo
public static Connection getSqlConnnection() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
try {
return DriverManager.getConnection("jdbc:mysql://localhost/world?useUnicode=true&"
+ "serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false", "root", "1221312303");
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
con = Util.getSqlConnnection();
stmt = con.createStatement();
String sql = "select * from countrylanguage";
rs = stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}finally {
if(rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(con != null) {
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}