前言
JDBC是一种数据库连接,是一种用于执行sql语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
连接的几种数据库
1.连接DB2
jdbc.driverClassName=com.ibm.db2.jcc.DB2Driver
jdbc.url=jdbc:db2://10.25.77.143:50001/efmpx
#jdbc.url=jdbc:db2://10.25.33.150:50001/dsoa
#jdbc.url=jdbc:db2://10.12.200.23:50001/dsoa
#jdbc.url=jdbc:db2://127.0.0.1:50000/LOCAL1
jdbc.username=spesdba
jdbc.password=password
jdbc.maxActive=50
jdbc.validationQuery=SELECT 1 FROM iplat.TED10
2.连接ORACLE
#jdbc.driver = oracle.jdbc.driver.OracleDriver
#jdbc.url = jdbc:oracle:thin:@localhost:1521:yfbceg
#jdbc.username = ecan
#jdbc.password = ecan
#jdbc.maxActive= 50
3.连接SQL Server
#jdbc.driver = com.inet.tds.TdsDriver
#jdbc.url = jdbc:inetdae7:localhost:1433?charset=GBK
#jdbc.username = ecan
#jdbc.password = ecan
#jdbc.maxActive= 50
4.连接mysql
#jdbc.driver = com.mysql.jdbc.Driver
#jdbc.url = jdbc:mysql://localhost/ecan?useUnicode=true&characterEncoding=gbk
#jdbc.username = ecan
#jdbc.password = ecan
#jdbc.maxActive= 50
5.连接HSQL
#jdbc.driver = org.hsqldb.jdbcDriver
#jdbc.url = jdbc:hsqldb:hsql://localhost
#jdbc.username = ecan
#jdbc.password = ecan
#jdbc.maxActive= 50
6.连接postgresql
#jdbc.driver = org.postgresql.Driver
#jdbc.url = jdbc:postgresql://localhost/acl?charSet=ISO-8859-1
#jdbc.username = ecan
#jdbc.password = ecan
#jdbc.maxActive= 50
参考两位博主:
http://blog.youkuaiyun.com/huahuagongzi99999/article/details/8244259
http://blog.youkuaiyun.com/daxiang12092205/article/details/27561503
个人添加(jdbc连接数据库的代码和步骤):
1、加载JDBC驱动程序:
Class.forName("com.mysql.jdbc.Driver") ;
2、提供JDBC连接的URL
1
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
2
String url="jdbc:oracle:thin:@localhost:1521:orcl";
String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
3、创建数据库的连接
Connection con =DriverManager.getConnection(url , username , password ) ;
4、创建一个Statement
要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3
种类型:
1、执行静态SQL语句。通常通过Statement实例实现。
2、执行动态SQL语句。通常通过PreparedStatement实例实现。
3、执行数据库存储过程。通常通过CallableStatement实例实现。
1
Statement stmt = con.createStatement() ;
2
PreparedStatement pstmt = con.prepareStatement(sql) ;
3
CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ;
5、执行SQL语句
Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate
和execute
1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句
,返回一个结果集(ResultSet)对象。
2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或
DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的
语句。
具体实现的代码:
1
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;
2
int rows = stmt.executeUpdate("INSERT INTO ...") ;
3
boolean flag = stmt.execute(String sql) ;
6、处理结果
两种情况:
1、执行更新返回的是本次操作影响到的记录数。
2、执行查询返回的结果是一个ResultSet对象。
• ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些
行中数据的访问。
• 使用结果集(ResultSet)对象的访问方法获取数据:
while(rs.next()){
String name = rs.getString("name") ;
String pass = rs.getString(1) ; // 此方法比较高效
}
(列是从左到右编号的,并且从列1开始)
7、关闭JDBC对象
操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声
明顺序相反:
1、关闭记录集
2、关闭声明
3、关闭连接对象
if(rs != null){ // 关闭记录集
try{
rs.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(stmt != null){ // 关闭声明
try{
stmt.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
if(conn != null){ // 关闭连接对象
try{
conn.close() ;
}catch(SQLException e){
e.printStackTrace() ;
}
}
spring中jdbc用法
jdbc.properties代码:
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@10.10.1.1:1521:ORCL
jdbc.username=test
jdbc.password=test
applicationContext.xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd ">
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/jdbc.properties</value>
</list>
</property>
</bean>
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"
value="${jdbc.driverClassName}">
</property>
<property name="url"
value="${jdbc.url}">
</property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.OracleDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/xy6/form/LoginForm.hbm.xml</value>
</list>
</property>
</bean>
<!-- 指定事务管理器类,将sessionFactory注入,让该事务管理器具有打开和关闭事务的能力 -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 为事务管理器类指定匹配器,通过用name指定的匹配字符串进行对对应的方法进行打开和关闭事务 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="modify*" propagation="REQUIRED" />
<tx:method name="deploy*" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
<!-- 为事务管理器类指定进行匹配的范围,到指定的地方通过匹配器字符串进行筛选,对应上后为该方法打开和关闭事务 -->
<aop:config proxy-target-class="true">
<aop:pointcut id="managerOperation" expression="execution(* com.xy6.dao.*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="managerOperation" />
</aop:config>
<!-- 该 BeanPostProcessor 将自动对标注 @Autowired 的 Bean 进行注入 -->
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
<!-- 使用annotation 自动注册bean,并检查@Required,@Autowired的属性已被注入 -->
<context:component-scan base-package="com.xy6"/>
<!-- spring转发 -->
<bean name="/login" class="com.xy6.action.LoginAction">
</bean>
<bean id="loginAction" class="com.xy6.action.LoginAction"></bean>
<bean id="loginService" class="com.xy6.service.impl.LoginServiceImpl"></bean>
<bean id="loginDAO" class="com.xy6.dao.impl.LoginDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
</beans>