java连接数据库常用的有2种方式:odbc桥接和Tomcat数据池连接。这2种方式各有其优点和缺点。
首先,odbc桥接方式容易移植,且配置简单,但也存在一些致命的缺陷。当jsp调用odbc桥接方式的javabean时,经常会出现Microsoft][ODBC SQL Server Driver]无效的描述符索引的问题,这是由于odbc的一些bug造成的,在jsp对sqlserver数据库进行数据读取的时候,必须按照表中列名的顺序读取,否则会出现错误,因此在读取数据的时候要按照数据库字段的顺序来取。比如,数据库中某张表字段的顺序是id,id,name,address,我们在读取的时候一定要按下面顺序来取:
rs.getString("id")
rs.getString("name")
rs.getString("address")
当然也可以先赋值
String s1=rs.getString("id");
String s2=rs.getString("name");
String s3=rs.getString("address");
然后便可以随意顺序使用s1,s2,s3了!这样做的毛病很明显,如果我们只要使用表中的一两个靠后的字段,却要取出整张表的内容,不仅浪费了内存,而且增加了程序的执行时间。
其次,使用Tomcat数据池连接时,就没用有上述的问题存在,但是其配置却相对复杂,还要安装jdbc sp3驱动,有些防火墙甚至会屏蔽1433连接端口。
首先,odbc桥接方式容易移植,且配置简单,但也存在一些致命的缺陷。当jsp调用odbc桥接方式的javabean时,经常会出现Microsoft][ODBC SQL Server Driver]无效的描述符索引的问题,这是由于odbc的一些bug造成的,在jsp对sqlserver数据库进行数据读取的时候,必须按照表中列名的顺序读取,否则会出现错误,因此在读取数据的时候要按照数据库字段的顺序来取。比如,数据库中某张表字段的顺序是id,id,name,address,我们在读取的时候一定要按下面顺序来取:
rs.getString("id")
rs.getString("name")
rs.getString("address")
当然也可以先赋值
String s1=rs.getString("id");
String s2=rs.getString("name");
String s3=rs.getString("address");
然后便可以随意顺序使用s1,s2,s3了!这样做的毛病很明显,如果我们只要使用表中的一两个靠后的字段,却要取出整张表的内容,不仅浪费了内存,而且增加了程序的执行时间。
其次,使用Tomcat数据池连接时,就没用有上述的问题存在,但是其配置却相对复杂,还要安装jdbc sp3驱动,有些防火墙甚至会屏蔽1433连接端口。