第15章 Java数据库连接(JDBC) 15.1 创建数据源 15.2 JDBC-ODBC桥接器 15.3 顺序查询 15.1 创建数据源 15.2 JDBC-ODBC桥接器 15.3 顺序查询 15.4 可滚动结果集 15.5 排序查询 15.6 模糊查询 15.7 随机查询 15.8 更新、添加、删除记录 15.9 预处理语句 15.10 数据库访问中的套接字技术
JDBC JDBC(Java DataBase Connection)是Java数据库连接API。简单地说,JDBC能完成3件事: 与一个数据库建立连接。 向数据库发送SQL语句。 处理数据库返回的结果。
15.1 创建数据源 为了同数据库建立连接,首先要创建一个ODBC数据源。打开Windows中的控制面,对于WindowXP,选择“性能和维护”→“管理工具”→“数据源(ODBC)” ;对于Window2000,选择“管理工具”→“数据源(ODBC)”;对于Window9X,选择 “数据源(ODBC)”。也可以使用“资源管理器”双击c:\windows\system32下的可执行文件“odbcad32”打开“数据源(ODBC)”。
建立数据源的步骤 打开“数据源(ODBC)”将出现ODBC数据源管理器对话框 在ODBC数据源管理器对话框中选择“用户DSN”,然后单击“添加”按钮,将出现安装数据源的驱动程序对话框,可以在选择列表中选择相应的驱动程序。 在选择驱动程序对话框选择好驱动程序后,单击“完成”按钮,将出现创建数据源对话框,。在该对话框中,你需要为创建的数据源起一个名称,并为你创建的数据源选择一个数据库。
15.2 JDBC-ODBC桥接器 为了要连接到这个数据库,我们首先要建立一个JDBC-ODBC桥接器: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Statement sql=con.createStatement(); 处理查询结果 连接到数据库 Connection con=DriverManager.getConnection ("jdbc:odbc:数据源名字","login name"," password "); 发送SQL语句 Statement sql=con.createStatement(); 处理查询结果 ResultSet rs=sql.executeQuery (“SQL语句");
15.3 顺序查询 使用结果集Result的next()方法,可以顺序的查询。一个结果集将游标最初定位在第一行的前面,第一次调用next()方法使游标移动到第一行。next()方法返回一个boolean型数据,当游标移动到最后一行之后返回false。
15.4 可滚动结果集 为了得到一个可滚动的结果集,必须使用下述方法先获得一个Statement对象: Statement stmt=con.createStatement (int type ,int concurrency); 然后,根据参数的type、concurrency的取值情况,stmt返回相应类型的结果集: ResultSet re=stmt.executeQuery(SQL语句);
type的取值决定滚动方式,取值情况如下: ResultSet.TYPE_FORWORD_ONLY 结果集的游标只能向下滚动。 ResultSet.TYPE_SCROLL_INSENSITIVE 结果集的游标可以上下移动,当数据库变化时,当前结果集不变。 ResultSet.TYPE_SCROLL_SENSITIVE 返回可滚动的结果集,当数据库变化时,当前结果集同步改变。
Concurrency 取值决定是否可以用结果集更新数据库,Concurrency取值: ResultSet.CONCUR_READ_ONLY 不能用结果集更新数据库中的表。 ResultSet.CONCUR_UPDATETABLE 能用结果集更新数据库中的表。
15.5 排序查询 可以在SQL语句中使用ORDER BY子语句,对记录排序 .
15.6 模糊查询 可以用SQL语句操作符LIKE进行模式般配,使用“%”代替0个或多个字符,用一个下划线“_”代替1个字符。比如,下述语句查询姓氏是“王”的记录: rs=sql.executeQuery ("SELECT * FROM students WHERE 姓名 LIKE '王%' ");
15.7 随机查询 用Math类的静态方法random()可以产生一个大于0小于1的随机数,再用下述公式: int i=(int)(Math.random()*number); 产生一个0到number之间的随机数,根据这个随机数将游标移动到相应的行,并输出该行记录.
15.8 更新、添加、删除记录 使用SQL语句更新记录中字段的值 Statement对象调用方法: public int executeUpdate(String sqlStatement); 通过参数sqlStatement指定的方式实现对数据库表中记录的字段值的更新.
15.9 预处理语句 当向数据库发送一个SQL语句,比如“Select * From chengjibiao”,数据库库中的SQL解释器负责将把SQL语句生成地层的内部命令,然后执行该命令,完成有关的数据操作。如果不断地向数据库提交SQL语句势必增加数据库中SQL解释器的负担,影响执行的速度。如果应用程序能针对连接的数据库,事先就将SQL语句解释为数据库地层的内部命令,然后直接让数据库去执行这个命令,显然不仅减轻了数据库的负担,而且也提高了访问数据库的速度。
对于JDBC,如果使用Connection和某个数据库建立了连接对象con,那么 con就可以调用 prepareStatement(String sql) 方法对SQL语句进行预编译处理,生成该数据库地层的内部命令,并将该命令封装在PreparedStatement对象中,那么该对象调用相应的方法都可以使得该地层的内部命令被数据库执行.
15.10 数据库访问中的套接字技术 利用套接字连接向服务器发送一个查询的条件,而服务器负责对数据库的查询,然后服务器再将查询的结果利用建立的套接字返回给客户端。