关于Java的Access的SQL连接与查询(新手版)
前言
本文是Java与Access中连接的方法,也是第一次写,请各位多多指明文章中的错误,共同进步。
新建Access数据库(2007版,其他版本也大同小异)与表
(1)点击左上角图标选择-新建空白数据库
(2)右键单击选择设计视图会出现另存为给表起个名字(这里叫textle,注意一会SQL语句要用到)
(3)输入字段
(4)textle表中 输入数据
## 配置本地数据库(ODBC)
首先打开 控制面板-管理工具-ODBC(32-bit)
(1)打开ODBC(32)
(2)给数据源起个名字(url时要用到)
(3)选择数据库
(6)一定要单击这三个确定 保存更改
新建Project 选择.jar(数据库驱动文件)
.jar包可以直接从网上下载(一直要下载Access版)
(1)打开IDEA软件 选择新建
(2)新建一个名字叫做lib文件夹
(3)这里为了方便直接将jar包复制粘贴到lib文件夹内
(4)打开IDEA 可以直接看到这个jar包(注意这个包现在是不能打开的 也就是无法使用)
(5)加载jar包 选择File-project Structure
连接Access
新建类文件
在主方法内编写
public static void main(String[] args) {
try {
Class.forName( “org.hsqldb.jdbc.JDBCDriver” );//连接数据库
} catch (ClassNotFoundException e) {
System.out.println( e.getMessage() );
}
}
这里的Class.forName会出现异常 所以要用try抛出
如果未正常连接会给出错误并输出
里面的参数"org.hsqldb.jdbc.JDBCDriver"是jar包里的文件
关于如何找
创建连接通道
public static void main(String[] args) {
String url=“jdbc:odbc:aabbcc”;
try {
Class.forName( “org.hsqldb.jdbc.JDBCDriver” );//连接数据库
Connection con = DriverManager.getConnection(url,"","");//创建用户通道验证数据库
} catch (ClassNotFoundException e) {
System.out.println( “连接错误”+e.getMessage());
}catch (SQLException e){
System.out.println( “验证错误”+e.getMessage() );
}
}
这里用 Connection con = DriverManager.getConnection(url," “,” ");
同样也是需要try 这里用SQlException e 如果出错会给出
“验证错误 + 错误信息”
关于里面的参数
第一个逗号内是url
连接数据库的地址 url=“jdbc:odbc:aabbcc”;
后面的“aabbcc“ 是上文中创建ODBC时取得名字(如果忘记请看上面的配置本地数据库)
第二个逗号内是数据库的账号名
如果没有创建账号则可以不写用双引号括起来,
第三个是密码 同上
运行测试
这里运行一下,未出现错误表示连接成功
这里吧url数据库打错 试试
可以看到 这里捕捉到了错误 !!!
读取数据库表(遍历)
public static void main(String[] args) {
String url=“jdbc:odbc:aabbcc”;
try {
Class.forName( “org.hsqldb.jdbc.JDBCDriver” );//连接数据库
Connection con = DriverManager.getConnection(url,"","");//创建用户通道验证数据库
Statement sta = con.createStatement();//创建用户通道
ResultSet rst = sta.executeQuery(“select * from textle”);//获取结果集
while(rst.next()){//遍历表
System.out.println( rst.getString(“id”));//输出字段
}
} catch (ClassNotFoundException e) {
System.out.println( “连接错误”+e.getMessage());
}catch (SQLException e){
System.out.println( “验证错误”+e.getMessage() );
}
ResultSet rst = sta.executeQuery(“select * from textle”);//获取结果集用于返回所有数据
sta.executeQuery(“select * from textle”);里面的参数 是SQL语句
select * //查询匹配所有字段
from textle //新建数据库时创建的表“textle”
while(rst.next()){//遍历表
System.out.println( rst.getString(“id”));//输出字段
}
关于这两个
while (rst.next())是循环数据
而rst.next是找数据库中下一个字段(从第一个开始) 当找到最后一个字段时为假 则推出
rst.getString(“id”)得到结果集的字符串数据 那是谁的字符串呢 就是“id”
System.out.println()是输出括号里的数据
可以看到运行成功并输出了数据
为什么会输出123呢 咱们换个字符串(name)试试
可以发现 我们已经可以遍历数据库的信息了
但是为什么只有一列呢 我们再看看这样写
是不是得到了 我们表中的所有信息
什么?格式看不懂? 那我们再这样写试试 ~
当然还有最后一步
当我们连接数据库时 要最后释放连接
rst.close();
con.close();
sta.close();
最后所有的main内的代码附上~
public static void main(String[] args) {
String url=“jdbc:odbc:aabbcc”;
try {
Class.forName( “org.hsqldb.jdbc.JDBCDriver” );//连接数据库
Connection con = DriverManager.getConnection(url,"","");//创建用户通道验证数据库
Statement sta = con.createStatement();//创建用户通道
ResultSet rst = sta.executeQuery(“select * from textle”);//获取结果集
while(rst.next()){//遍历表
System.out.println( rst.getString(“id”)+"\t"+rst.getString( “name” )+"\t"+rst.getString( “sex” )+"\t");//输出字段
}
rst.close();
con.close();
sta.close();
} catch (ClassNotFoundException e) {
System.out.println( “连接错误”+e.getMessage());
}catch (SQLException e){
System.out.println( “验证错误”+e.getMessage() );
}
}