Mysql,驱动mysql-connector-java-5.1.27.jar,官网下载,https://dev.mysql.com,独立平台开发版
如果是用最新的MySQL,记得用新的jar包,最近就出现不兼容的情况了 ~ _ ~
mysql-connector-java-5.1.46.jar,连接方式:
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:dabatasename", "andy", "123456");//dabatasename为数据库名
//协议名+子协议名+数据源名
如果是较新版本的如mysql-connector-java-8.0.11.jar包,基本原理差不多,改变的地方是不需要手动加载驱动程序,但会有时钟异常,后面一大坨就是解决那个的,连接方式为:
Class.forName("com.mysql.cj.jdbc.Driver");//也可以不写,没影响
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/fleas?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false", "root", "handsome");
SQL时钟异常的情况
java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
Oracle,驱动classes12.jar,可在安装Oracle目录搜索找到
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin://127.0.0.1:oracle", "andy", "123456");
黑历史啊~~~~,太久没用oracle看了下之前连一下发现错了。。。现在已经纠正了,顺便补充一下内容吧,以下给小白看,尽量让当初自己学的时候一脸懵逼,让新学的感觉好理解点
使用java连接数据库,简称JDBC(Java DataBase Connectivity,java数据库连接),无论以后你学JSP,用Hibernate,Mybatis,总之连接数据库都要进行类似的操作,这里介绍简单的JDBC连接
过程大体六步:
导包==》加载驱动程序==》连接到数据库==》连接后需要自行的操作指令(select、update…)= =》执行操作指令以及返回的结果==》关闭连接
一、导jar包
新建一个lib文件夹,复制粘贴包进去,不同数据库加载的jar包不同,大体如图示:
发现少了oracle,可以直接右键==》Build Path==》Add to Build Path手动加载进去
二、加载驱动程序
不同数据库的加载也不同
加载mysql驱动:Class.forName(“com.mysql.jdbc.Driver”);
加载oracle驱动:Class.forName(“oracle.jdbc.driver.OracleDriver”);
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
三、连接到数据库
完成这部,数据库就连接成功了,基本就是增删改查balabala之类的
Connection conn = DriverManager.getConnection("jdbc:oracle:thin://127.0.0.1:oracle", "andy", "123456");
MySQL上面有就不重复粘代码了
四、操作指令(sql语句)
操作指令有statement、preparestatement、CallableStatement,具体执行百度两者的区别(想精通就去自行百度研究吧),很多博客有介绍,不做详细介绍
PreparedStatement sql = conn.prepareStatement("select * from student_07");
五、执行操作指令以及返回的结果
执行方法有:
execute(String sql):运行语句,返回是否有结果集
executeQuery(String sql):运行select语句,返回ResultSet结果集。
executeUpdate(String sql):运行insert/update/delete操作,返回更新的行数。
addBatch(String sql) :把多条sql语句放到一个批处理中。
executeBatch():向数据库发送一批sql语句执行。
返回结果ResultSet的get方法可以获得返回的结果,如getString(int columnIndex),传入列数获得查询结果
ResultSet rs = sql.executeQuery();
六、关闭连接
rs.close();
sql.close();
conn.close();
以下完整代码以及结果截图
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JdbcTest {
public static void main(String[] args) {
connection();
}
public static void connection() {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
Connection conn = DriverManager.getConnection("jdbc:oracle:thin://127.0.0.1:oracle", "andy", "123456");
PreparedStatement sql = conn.prepareStatement("select * from student_07");
ResultSet rs = sql.executeQuery();
while(rs.next()){
System.out.println(rs.getString(1)+"\t"+rs.getString(2));
}
rs.close();
sql.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
结果
基本流程就是这样了。。。过程很清晰明了,你的目的是用数据库,那么你要加载它,连接它,然后怎么用,用了有什么结果,用完后随手关闭。。。
如果实在记不住的话。。。就跟我一样,第一次看着流程来打一遍,运行成功;然后全部删掉,自己想着步骤打一遍,运行成功;再然后,删掉,再打一遍,基本来三遍左右就能记住流程(最多三个小时就能解决),然后以后别人问JDBC流程怎么用,就可以怼他了,嘿嘿嘿~~~~