java设计数据库应用例子 java数据库案例
转载
- java database connect
- java访问数据库平台的统一接口,但是jdbc有缺陷,就是不同数据库的sql语句并没有统一
- jdbc需要在程序中写不同的sql语句,hibernate就完全屏蔽了这种区别
- 在开发端,有统一的JDBC接口,在数据库端,不同的数据库有不同的JDBC接口(类库)
- DriverManger(驱动管理器)的作用有两个:
- 注册驱动:这可以让JDBC知道要使用的是哪个驱动;
- 获取Connection:如果可以获取到Connection,那么说明已经与数据库连接上了。
- Connection对象表示连接,与数据库的通讯都是通过这个对象展开的:
- Connection最为重要的一个方法就是用来获取Statement对象;
- Statement是用来向数据库发送SQL语句的,这样数据库就会执行发送过来的SQL语句
- int executeUpdate(String sql):执行更新操作,即执行insert、update、delete语句,其实这个方法也可以执行create table、alter table,以及drop table等语句,但我们很少会使用JDBC来执行这些语句;
- ResultSet executeQuery(String sql):执行查询操作,执行查询操作会返回ResultSet,即结果集。
- boolean execute():Statement还有一个boolean execute()方法,这个方法可以用来执行增、删、改、查所有SQL语句。该方法返回的是boolean类型,表示SQL语句是否执行成功。
- 如果使用execute()方法执行的是更新语句,那么还要调用int getUpdateCount()来获取insert、update、delete语句所影响的行数。
- 如果使用execute()方法执行的是查询语句,那么还要调用ResultSet getResultSet()来获取select语句的查询结果。
- ResultSet executeQuery(String sql):执行查询操作,数据库在执行查询后会把查询结果,查询结果就是ResultSet;
- ResultSet对象表示查询结果集,只有在执行查询操作后才会有结果集的产生。
- 结果集是一个二维的表格,有行有列。操作结果集要学习移动ResultSet内部的“行光标”,以及获取当前行上的每一列上的数据:
- boolean next():使“行光标”移动到下一行,并返回移动后的行是否存在;
- XXX getXXX(int col):获取当前行指定列上的值,参数就是列数,列数从1开始,而不是0。
- 导入mysql的驱动jar包mysql-connector-java-5.1.39-bin.jar;
- 写第一个测试程序,连接mysql并查询
package com.qiaolei;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
public class ConDb {
@Test
public void test() throws ClassNotFoundException, SQLException {
// 注册驱动,只用加载这个类,在static代码块中会自动注册驱动
// 出现异常ClassNotFoundException只有两个原因:
// 1.你没有给出mysql的jar包;
// 2.你把类名称打错了,查看类名是不是com.mysql.jdbc.Driver
Class.forName("com.mysql.jdbc.Driver");
// 获得连接
// 参数格式第一部分是jdbc,这是固定的;
// 第二部分是数据库名称,那么连接mysql数据库,第二部分当然是mysql了;
// 第三部分是由数据库厂商规定的,我们需要了解每个数据库厂商的要求,
// mysql的第三部分分别由数据库服务器的IP地址(localhost)、端口号(3306),以及DATABASE名称(mydb1)组成。
// ?后面跟连接参数
// 出现SQLException有可能是连接的三个参数写错了
Connection con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/ecshop?useUnicode=true&characterEncoding=UTF8", "root", "123456");
// Statement是用来向数据库发送要执行的SQL语句的!
Statement stmt = con.createStatement();
// 发送sql查询语句
String sql = "select * from ecs_article";
ResultSet rs = stmt.executeQuery(sql);
// ResultSet对象是一个二维数组,next()方法用于将光标移到下一行,并返回是否有下一行
// getXX(列数或列名)返回当前行某列的值
while (rs.next()) {
int id = rs.getInt(1);
String title = rs.getString(3);
System.out.println(id + ", " + title);
}
// 释放资源,顺序和创建的顺序相反
rs.close();
stmt.close();
con.close();
}
}
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。