例:
import java.sql.*;
public class testdata{
public static void main(String args[]){
String name;
String query="SELECT to_char(sum(m_act)/1000,‘9,999,999,999‘)t_m_act FROM m_fulltable where lot_type=‘P‘ "+
"and time_of_run=to_date(‘20081009‘,‘yymmdd‘) and substr(m_fulltable.mils_code,1,1)=‘A‘";
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//load the JDBC driver
Connection con=DriverManager.getConnection("jdbc:odbc:oracletest","MILS","mil3068");
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(query);//execute SQL查询
while(rs.next()){//get data from ResultSet
name=rs.getString("t_m_act");
************************************
JDBC连接Microsoft SQL Server
(1)将sqljdb.jar该软件包复制到Tomcat服务器所使用的JDK的\jre\lib\ext文件夹中或Tomcat服务器安装目录的\common\lib文件夹中
(2)在安装sql server2000的数据库服务器上将它升级到sp3。sql server 2000 sp3升级包是sql2ksp3.exe。 你可以在这里下载http://www.bossed.com.cn/download/detailcp.asp?id=74
安装好以后执行安装目录下的setup.bat进行升级。
(3)在web服务器上安装sql server 2000 jdbc 驱动.
下载SQLSERVER2000的jdbc驱动程序
http://download.microsoft.com/download/3/0/f/30ff65d3-a84b-4b8a-a570-27366b2271d8/setup.exe
安装好以后将安装目录C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib下的三个包msbase.jar,mssqlserver.jar,msutil.jar复制到web项目的lib目录下。
滚动查询经常用到ResultSet的下述方法:
public boolean previous(),将游标向上移动,该方法返回boolean型数据,当移动到第一行之前返回false。
public void beforeFirst(),将游标移动到结果集的初始位置,即在第一行之前。
public void afterLast(),将游标移动到结果集最后一行之后。
public void first(),将游标移到结果集的第一行。
public void last(),将游标移到结果集的最后一行。
public boolean isAfterLast(),判断游标是否在最后一行之后。
public boolean isBeforeFirst(),判断游标是否在第一行之前。
public boolean isFirst(),判断游标是否指向结果集的第一行。
public boolean ifLast(),判断游标是否指向结果集的最后一行。
public int getRow(),得到当前游标所指行的行号,行号从1开始。如果结果集中没有行,则返回0。
public boolean absolute(int row),将游标移到参数row指定的行号。row去取负值表示倒数的行数。absolute(-1)表示倒数第一行。
***********************
如果要使用上述随机查询的方法,而没有为type选择滚动方式,而只是简单的Statement stmt=con.createStatement();就会报出以下错误:
SQLServer2000 Dvriver for JDBC Unsupported method:Resulset.last
***********************
6更新、添加与删除操作
Statement对象调用方法:
public int executeUpdate(String sqlStatement);
通过参数sqlStatement指定的方式实现对数据库表中记录的更新、添加和删除操作。更新、添加和删除记录的SQL语法分别是:
UPDATE <表名> SET <字段名> = 新值 WHERE <条件子句>
INSERT INTO 表(字段列表) VALUES (对应的具体记录) 或 INSERT INTO 表 VALUES (对应的具体记录)
DELETE FROM <表名> WHERE <条件子句>
PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency)
创建一个 PreparedStatement 对象,该对象将生成具有给定类型和并发性的ResultSet对象(可以得到随机的ResultSet对象)。
预处理语句中使用通配符
在对SQL进行预处理时可以使用通配符(?)来代替字段的值,只要的预处理语句执行之前设置通配符所表示的具体值即可。如:
sql=con.prepareStatement("SELECT * FROM employee WHERE salary<?");
那么在sql对象执行之前,必须调用相应的方法设置通配符?代表具体值。如:sql.setFloat(1,4389);
***********************
注意当我们从数据库中获取int类型的数据时,返回的将是字符串型,如果赋给整型变量需要进行转换。如:
int Tid=Integer.parseInt(rs.getString("intID"));
当从数据库中获取数据时,Tomcat窗口出现如下错误:
:[Microsoft][ODBC SQL Server Driver]无效的描述符索引
问题的解决:
在对sqlserver数据库进行数据读取的时候,
必须按照表中列名的顺序读取,不然就会出现这个错误错误.
如果数据库定义顺序:
name
password
power
取值时一定要按下面顺序来取:
rs.getString("name")
rs.getString("password")
rs.getString("power")
这是因为rs默认为顺序查询,如果将rs改为随机查询就可以不按顺序取值了。
*****************