了解JDBC,如何用java连接数据库。
1.加载驱动
连接数据库需要有驱动来支持,Java有自己的驱动类。
但是数据库有很多种,这时就需要使用数据库方提供的jar包。这里连接的是MySQL,使用的是:
mysql-connector-java-5.1.6-bin.jar
2.通过驱动连接数据库
我们在使用数据库时都要用管理员账号才能使用数据库,用java连接同理,需要输入密码来验证。
这里用Connection对象连接数据库
3.用sql语句操作
sql数据库是靠一系列语句来操作的,那么连接后需要吧sql语句传入数据库来执行。
通过第二步的:Connection对象来获取输入sql语句的连接对象Statement
4.语句执行结果
例如查询,在执行完后会显示结果,这些结果在java中需要来有容器接收。
第三步中Statment对象有许多方法来区分不同的sql语句及其返回值,具体执行需选择使用
5.连接的关闭
在连接数据库后,运行的程序会一直占有数据库的资源,为了不浪费资源(站在茅坑不拉屎)就需要在用完之后断开数据库的连接。毕竟数据库的连接资源是有限的。
//1.管理驱动 DriverManager
//2.驱动 Driver
//3.连接 Connection
//4.sql语句 Statement
//5.关闭 Close
public class Domysql {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//加载驱动
Class.forName("com.mysql.jdbc.Driver");
//连接
Connection conn =
DriverManager.getConnection("jdbc:mysql://localhost:3306/demo", "root", "aptx4869");
//sql语句,返回结果
Statement st = conn.createStatement(); //用于输入sql
ResultSet re = st.executeQuery("select * from user"); //Statement不同方法不同类型的sql
//接收结果输出,数字列索引,“(列名)”
while(re.next()) {
System.out.println(re.getString("id") + " " + re.getString("name") + " " + re.getInt("age"));
}
//关闭
re.close();
st.close();
conn.close();
}
}
简易封装
在了解完本地java如何连接及过程来进行封装
封装类
package mysql;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCUtils {
//需要尽晚连接,尽早关闭。
private static String driver = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://localhost:3306/demo";
private static String user = "root";
private static String password = "aptx4869";
private static Connection conn = null;
private static Statement st = null;
//静态代码块,加载驱动
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//连接并返回Connection
private static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url, user,password);
}
//更新
public void Update(String sql){
try {
conn = getConnection();
st = conn.createStatement();
st.executeUpdate(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Close(null);
}
//查询
public void Select(String sql){
try {
conn = getConnection();
st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);
System.out.println("__________________________________________________________________________");
while(rs.next()) {
System.out.println("|" + rs.getString("id") + "|" + rs.getInt("age") + "|" + rs.getString("name"));
}
Close(rs);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//关闭
public static void Close(ResultSet rs) {
try {
if(rs != null) {
rs.close();
}
rs = null;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if(st != null) {
st.close();
}
st = null;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
if (conn != null) {
conn.close();
}
conn = null;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
测试
package mysql;
public class Test {
public static void main(String[] args) {
String sql = "insert user value ('007','zhaobing',54)";
String sql2 = "select * from user";
JDBCUtils jd = new JDBCUtils();
jd.Select(sql2);
jd.Update(sql);
jd.Select(sql2);
}
}