学习JAVA最初,我们就需要学习JAVA如何连接数据库,除去后面Mybatis、Hibernate等框架的封装,最初要学习的是最简单的JDBC连接Mysql数据库的方法,在这里详细说明下。
首先,贴一下完整的代码,然后再详细解释:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class JdbcTest { public static String URL = "jdbc:mysql://localhost:3306/work?autoReconnect=true&useUnicode=true&characterEncoding=utf-8"; public static String USERNAME = "work"; public static String PASSWORD = "work"; public static String DEMO_SQL = "select name from work where id = 1"; public static void main(String[] args) { Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection(URL, USERNAME, PASSWORD); statement = connection.createStatement(); resultSet = statement.executeQuery(DEMO_SQL); while (resultSet.next()) { String name = resultSet.getString("name"); System.out.println(name); } } catch (Exception e) { System.err.println(e); } finally { try { if (null != resultSet) { resultSet.close(); } if (null != statement) { statement.close(); } if (null != connection) { connection.close(); } } catch (Exception e) { System.err.println(e); } } } }
以上就是一个简单的连接Mysql数据库的例子。
然后贴一下本地Mysql相关信息:
用户名:work
密码:work
数据库实例:work
数据库表名:work(包含ID和NAME两个字段,只有一个ID=1的数据)
接下来我们讲解下,最上面是一些静态字符串的定义,下面就直接饮用,所以我们直接从main函数开始。
第一步:加载驱动类,因为我们连接的是Mysql数据库,所以要加载Mysql相关的驱动类:
Class.forName("com.mysql.jdbc.Driver");
在这里我们需要引用相关jar包的,如果是直接饮用jar包,可以下载mysql-connector-java-**.jar相关版本,这个网上都可以搜索得到。
如果是maven项目,可以通过增加以下xml引入:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.37</version> </dependency>
第二步:获取连接,在对数据库执行操作之前,需要获取对数据库的连接:
connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
在这里有三个参数,url、user、password,user和password就不多说了,分别说要操作数据库的用户名和密码,下面对url讲解下。
例如上面的url:[jdbc:mysql://localhost:3306/work?autoReconnect=true&useUnicode=true&characterEncoding=utf-8],这个url包含多个信息。
[jdbc:]:就是Java Data Base Connectivity的意思;
[mysql:]:指我们连接的数据库类型,如果是oracle数据库,就是oracle了;
[//]:系统预留分隔符,代表后面就是连接的具体信息;
[localhost:]:数据库IP地址,因为我是本地,所以就是localhost或者127.0.0.1,可以为IP或者域名;
[3306]:数据库监听端口,一般默认mysql安装后是3306,也可通过修改my.cnf修改端口号;
[work]:数据库实例,一个用户下面可能有多个数据库实例,这里要填写你需要连接的数据库实例名;
[?]:默认分隔符,代表后面是对数据库的附加参数,比如以上例子代表自动连接,而且用unicode编码,编码方式为UTF-8
到这里如果信息填写正确且数据库正常,我们就拿到了数据库的连接了。
第三步:获取执行SQL语句对象,也就是Statement:
statement = connection.createStatement();
Statement的意思是:一个执行静态SQL语句然后返回执行结果的对象。
第四步:执行SQL,获取返回结果:
resultSet = statement.executeQuery(DEMO_SQL);
这里可能注意到了,我用的是executeQuery方法,返回的是ResultSet对象,其实不止这一个方法,还有execute()、executeUpdate()等方法。
除了executeQuery是需要查询数据之外,其他方法都是对数据库的更新,所以返回boolean或者int,boolean代表执行是否成功,int返回该条SQL在数据库中影响的行数。
因为我们要查询数据库中某个字段的值,所以我们用executeQuery,执行后我们就拿到我们的ResultSet对象了。
第五步:解析ResultSet数据,获取Name值:
resultSet = statement.executeQuery(DEMO_SQL); while (resultSet.next()) { String name = resultSet.getString("name"); System.out.println(name); }
resultSet.next()代表遍历查询的结果,JAVA原本解释是将指针从当前的位置向后移动一行,也即是我们的遍历。
然后方法内我们可以调用result.getString(这了是列名)获取name的值,这是是列名name,我们也可以传入1,代表字段索引值。
假如我们查询了3个字段,那1、2、3分别代表我们查询的3个字段在当前行的结果。最后我们就打印出来name的值。
第六步:关闭相关对象连接。
JAVA对于最终必须执行的代码,最好放到finally代码块里,不管try里面的代码是否执行成功,都要释放资源或者做一些回收工作。
最后贴出我们的执行结果:
以上就是一个简单的连接数据库并且查询数据的例子了,如果有其他不懂的,欢迎留言探讨。