功能第一篇——第一个程序(JDBC)
Posted 若浮若沉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了功能第一篇——第一个程序(JDBC)相关的知识,希望对你有一定的参考价值。
流程图
综述
从零开始搭建JDBC环境。通过创建Java项目,在项目中,通过java程序执行SQL,并处理返回的结果。本文通过执行 select 1 from dual 语句来测试,并输出相结果集。首先通过简单java项目的方式。之后创建Maven项目,通过在Spring中配置C3P0数据源的方式。
简单项目方式
- 新建Java项目,名称随便起,例如JDBCTest。
- 导入数据库驱动类jar包。以Oracle数据库为例(前提是已经安装了Oracle数据库),Oralce驱动类jar包为ojdbc6.jar。位置在${Oracle_Home}/product/11.2.0/dbhome_1/jdbc/lib,其中${Oracle_home}为数据库的安装路径。
- 编写测试程序,代码如下
1 /** 2 * java与数据库交互的简单示例,运行select 1 from dual; 3 * @throws SQLException 4 */ 5 public static void RunSQLTest() throws SQLException 6 { 7 // 驱动方式获取Connection对象 8 Connection conn = getConnectionByDriver(); 9 // 创建Statement对象 10 Statement statement = conn.createStatement(); 11 // sql语句 12 String sql = "select 1 from dual"; 13 // 获取结果集对象 14 ResultSet rs = statement.executeQuery(sql); 15 while(rs.next()) 16 { 17 System.out.println("执行"+sql+"的运行结果为:"+rs.getInt(1)); 18 } 19 close(rs,statement,conn); 20 } 21 22 /** 23 * 通过Driver驱动方式,创建Connection对象 24 * @return 25 * @throws SQLException 26 */ 27 public static Connection getConnectionByDriver() throws SQLException 28 { 29 // Driver方式 30 OracleDriver driver = new OracleDriver(); 31 // jdbcUrl地址:格式为jdbc:subProtocol:subName 32 String jdbcUrl = "jdbc:oracle:thin:@localhost:1521:ORCL"; 33 // 建立连接属性 34 Properties prop = new Properties(); 35 // 指定用户名和密码 36 prop.setProperty("user", "system"); 37 prop.setProperty("password", "password"); 38 // 建立连接 39 Connection conn = driver.connect(jdbcUrl, prop); 40 return conn; 41 } 42 /** 43 * DriverManager的方式获取Connection 44 * @return 45 * @throws ClassNotFoundException 无法加载驱动类异常 46 * @throws SQLException 47 */ 48 public static Connection getConnectionByDriverManager() throws ClassNotFoundException, SQLException 49 { 50 // 驱动类名称 51 String driverClassName = "oracle.jdbc.OracleDriver"; 52 // jdbc地址 53 String jdbcUrl = "jdbc:oracle:thin:@localhost:1521:ORCL"; 54 // 加载驱动,这一过程伴随着驱动注册 55 Class.forName(driverClassName); 56 // 建立连接 57 Connection conn = DriverManager.getConnection(jdbcUrl, "system", "password"); 58 return conn; 59 } 60 /** 61 * 关闭Connection,statement,Resultset等对象 62 * @param rs 63 * @param statement 64 * @param conn 65 * @throws SQLException 66 */ 67 private static void close(ResultSet rs, Statement statement, Connection conn) 68 throws SQLException 69 { 70 rs.close(); 71 statement.close(); 72 conn.close(); 73 }
异常总结:
lThe Network Adapter could not establish the connection:监听程序没有打开。
l TNS:listener does not currently know of SID given in connect descriptor:jdbcUrl存在错误。
Spring配数据源方式
第一步:创建Maven项目,随便命名,例如MasterJDBC
第二步:导入数据库驱动jar包,参考简单项目方式第二步。
第三步:配置pom文件,配置Spring依赖,C3P0依赖
<properties> 2 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 3 <springVersion>4.3.7.RELEASE</springVersion> 4 </properties> 5 <dependencies> 6 <dependency> 7 <groupId>org.springframework</groupId> 8 <artifactId>spring-context</artifactId> 9 <version>${springVersion}</version> 10 </dependency> 11 <dependency> 12 <groupId>org.springframework</groupId> 13 <artifactId>spring-core</artifactId> 14 <version>${springVersion}</version> 15 </dependency> 16 <dependency> 17 <groupId>org.springframework</groupId> 18 <artifactId>spring-beans</artifactId> 19 <version>${springVersion}</version> 20 </dependency> 21 <dependency> 22 <groupId>org.springframework</groupId> 23 <artifactId>spring-jdbc</artifactId> 24 <version>${springVersion}</version> 25 </dependency> 26 <dependency> 27 <groupId>c3p0</groupId> 28 <artifactId>c3p0</artifactId> 29 <version>0.9.1.2</version> 30 </dependency> 31 </dependencies>
第四步: 在Spring文件中配置C3P0数据源
1 <!--引入properties文件--> 2 <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 3 <property name="locations" value="jdbc.properties"/> 4 </bean> 5 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> 6 <property name="driverClass" value="${jdbc.driverClass}"></property> 7 <property name="jdbcUrl" value="${jdbc.url}"></property> 8 <property name="user" value="${jdbc.username}"></property> 9 <property name="password" value="${jdbc.password}"></property> 10 </bean>
jdbc.properties文件的内容如下
jdbc.driverClass=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:masteroracle
jdbc.username=system
jdbc.password=password
第五步:编写测试程序
1 * 验证spring配置的C3P0数据源 2 * @throws SQLException 3 */ 4 public static void runSpringSQLTest() throws SQLException 5 { 6 // spring的ApplicationContext对象 7 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("spring-context.xml"); 8 // C3P0数据源对象 9 ComboPooledDataSource dataSource = context.getBean("dataSource", ComboPooledDataSource.class); 10 // Connection连接对象 11 Connection conn = dataSource.getConnection(); 12 // 创建Statement对象 13 Statement statement = conn.createStatement(); 14 // SQL语句 15 String sql = "select 1 from dual"; 16 // 结果集ResultSet 17 ResultSet rs = statement.executeQuery(sql); 18 while (rs.next()) 19 { 20 System.out.println("执行" + sql + "语句的结果为:" + rs.getInt(1)); 21 }
至此环境搭建完成。之后博客所有的内容都以此为基础。
以上是关于功能第一篇——第一个程序(JDBC)的主要内容,如果未能解决你的问题,请参考以下文章