1. 程式人生 > >07_資料庫建立,新增c3p0操作所需的jar包,編寫c3p0-config.xml檔案,編寫User.java,編寫jdbcUtils.java實現操作資料庫的模板工具類,UserDao編寫,Dao

07_資料庫建立,新增c3p0操作所需的jar包,編寫c3p0-config.xml檔案,編寫User.java,編寫jdbcUtils.java實現操作資料庫的模板工具類,UserDao編寫,Dao



1建立day14資料庫,建立user.sql表:

A 建立資料庫 day14

B 建立資料表 users

createtable users

(

id intprimarykeyauto_increment,

username varchar(20),

passwordvarchar(20)

);

2新增依賴的jar

c3p0-0.9.1.2.jar

mysql-connection-java-5.0.8-bin.jar

commons-beanutils-1.8.0.jar

commons-logging.jar

3編寫c3p0-config.xml

<?xml version="1.0" encoding="utf-8"?>

<c3p0-config>

<default-config>

<property name="initialPoolSize">5</property>

<property name="maxPoolSize">20</property>

<

property name="driverClass">com.mysql.jdbc.Driver</property>

<property name="jdbcUrl">jdbc:mysql://localhost:3306/day14</property>

<property name="user">root</property>

<property name="password">123456</property>

</default-config>

<named-config

name="toto">

<property name="initialPoolSize">5</property>

<property name="maxPoolSize">20</property>

<property name="driverClass">com.mysql.jdbc.Driver</property>

<property name="jdbcUrl">jdbc:mysql://localhost:3306/day14</property>

<property name="user">root</property>

<property name="password">123456</property>

</named-config>

</c3p0-config>

4 編寫User.java

package cn.toto.domain;

publicclass User {

privateintid;

private String username;

private String password;

publicint getId() {

returnid;

}

publicvoid setId(int id) {

this.id = id;

}

public String getUsername() {

returnusername;

}

publicvoid setUsername(String username) {

this.username = username;

}

public String getPassword() {

returnpassword;

}

publicvoid setPassword(String password) {

this.password = password;

}

public User() {

super();

}

}

5 編寫jdbcUtils.java

package cn.toto.utils;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.sql.DataSource;

import cn.toto.exception.DaoException;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class JdbcUtils {

private static DataSource ds;

static {

//ds = new ComboPooledDataSource();//預設的預設的配置

ds = new ComboPooledDataSource("toto");//配置檔案中設定的內容

}

//獲取與指定資料的連線

public static DataSource getSource(){

return ds;

}

//獲得與指定資料庫的連線

public static Connection getConnection() throws SQLException {

//從連線池返回一個連線

return ds.getConnection();

}

//釋放資源

public static void release(ResultSet rs,Statement stmt,Connection conn) {

if(rs!=null){

try{

rs.close();

}catch(SQLException e){

e.printStackTrace();

}

rs = null;

}

if(stmt!=null){

try{

stmt.close();

}catch(SQLException e){

e.printStackTrace();

}

stmt=null;

}

if(conn!=null){

try{

conn.close();

}catch(SQLException e){

e.printStackTrace();

}

conn = null;

}

}

//寫一個通過的增刪改方法

public static boolean update(String sql,Object[] params) {

Connection conn = null;

PreparedStatement pstmt = null;

ResultSet rs = null;

try {

//獲得連線

conn = getConnection();

//SQL

//預編譯sql

pstmt = conn.prepareStatement(sql);

//替換引數

int pos = 1;//設定一個腳標

//for(Object param : params)這樣寫是有錯誤的,會有空指標異常,要寫成如下的方法:

pstmt.setObject(i+1, params[1]);//由於不知道是什麼型別的,故可以用Object

//傳送sql

int num = pstmt.executeUpdate();

//返回結果

if(num>0)

return true;

return false;

} catch (SQLException e) {

throw new DaoException(e);

}finally{

release(rs,pstmt,conn);

}

}

//實現一個通用的查詢方法

public static Object query(String sql,Object[] params,ResultSetHandler handler){

Connection conn = null;

PreparedStatement pstmt = null;

ResultSet rs = null;

try{

conn = getConnection();

//sql

//預編譯sql

pstmt = conn.prepareStatement(sql);

//替換引數

for(int i=0;params!=null&&i<params.length;i++)

pstmt.setObject(i+1, params[1]);//由於不知道是什麼型別的,故可以用Object

//傳送sql

rs = pstmt.executeQuery();

//處理結果集

/*我們在方法中需要一種功能讓呼叫者裡呼叫

* 在方法的內部都有一個模組不會寫,有變化,需要留給呼叫者來處理*/

//這時我們需要用一種設計模式策略模式 TreeSet

//TreeSet實現排序,只是實現了部分功能(二叉樹,還有沒實現的)

//(元素的比較) 讓我們傳入比較器來實現

//讓我們傳入比較器實現Comparatorcompare方法

/*元素的自然順序實現Comparable介面的compareTo方法*/

//向呼叫者要一個結果集處理器

Object result = handler.handle(rs);//呼叫結果處理器的handle方法,它返回的結果就是我們想要的。將結果集變成了一個物件

return result;

}catch(SQLException e){

throw new DaoException(e);

}finally {

release(rs,pstmt,conn);

}

}

}

//寫一個通過的增刪改方法

public static boolean update(String sql,Object[] params) {

Connection conn = null;

PreparedStatement pstmt = null;

ResultSet rs = null;

try {

//獲得連線

conn = getConnection();

//SQL

//預編譯sql

pstmt = conn.prepareStatement(sql);

//替換引數

int pos = 1;//設定一個腳標

for(Object param : params)

pstmt.setObject(pos, param);//由於不知道是什麼型別的,故可以用Object

//傳送sql

int num = pstmt.executeUpdate();

//返回結果

if(num>0)

return true;

return false;

} catch (SQLException e) {

throw new DaoException(e);

}finally{

release(rs,pstmt,conn);

}

}

}

6 編寫UserDao.java

package cn.toto.dao;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

import cn.toto.domain.User;

import cn.toto.exception.DaoException;

import cn.toto.utils.BeanHandler;

import cn.toto.utils.BeanListHandler;

import cn.toto.utils.JdbcUtils;

import cn.toto.utils.ResultSetHandler;

publicclass UserDao {

public List<User> getAll() {

//sql

String sql = "select * from users";

//封裝引數

//實現結果集處理器也可以用預設的實現類

List list = (List) JdbcUtils.query(sql, null, new BeanListHandler(User.class));

return list;

}

public User find(int id){

String sql = "select * from users where id = ?";

//呼叫方法

User user = (User) JdbcUtils.query(sql, new Object[]{id}, new BeanHandler(User.class));

return user;

}

publicboolean insert(User user) {

/*//Sql

String sql = "insert into users(username,password) values(?,?)";

//封裝引數

Object[] params = new Object[2];

params[0] = user.getUsername();

params[1] = user.getPassword();

//呼叫新方法

boolean b = JdbcUtils.update(sql, params);

return b;*/

String sql = "insert into users(username,password) values(?,?)";

boolean b = JdbcUtils.update(sql, new Object[]{user.getUsername(),user.getPassword()});

相關推薦

Struts2、hibernate和spring下載整合jar

ssh三個框架各自所有版本下載地址如下 Struts framework 下載地址: spring framework 下載地址: ------------------------------------- struts2 commons-logging

搭建SSH環境之新增jar

<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

struts2,hibernate,spring下載整合JAR

原文地址:http://blog.csdn.net/zhuo889/article/details/9468225 ssh三個框架各自所有版本下載地址如下 Struts framework 下載地址: http://mirror.bjtu.edu.cn/apache/struts/bi

使用SAXReaderjar

使用SAXReader需要兩個jar包 dom4j-1.6.1.jar jaxen-1.1-beta-6.jar 記錄一下                  

SSH框架學習(一)——匯入框架jar

SSH框架學習(一)——匯入框架所需jar包 一、建立一個web專案 二、匯入Struts2的jar包 三、匯入Hibernate的jar包 四、匯入Spring的jar包 IOC開發: AOP開發: 五、引入整合

下載ssm框架jar 和 meaven結構。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=

springmvc 專案完整示例07 設定配置整合springmvc springmvcjarspringmvc web.xml檔案配置

前面主要是後臺程式碼,spring以及mybatis的整合 下面主要是springmvc用來處理請求轉發,展現層的處理 之前所有做到的,完成了後臺,業務層和持久層的開發完成了 接下來就是展現層了 有很多的mvc框架,這裡我們用springMVC 首先還是需要jar包 我們既然是web專案了

spring+mybatis+struts2 jar

c3p0-0.9.1.2.jar cglib-nodep-2.2.jar commons-fileupload-1.2.2.jar commons-io-2.0.1.jar commons-lang-2.5.jar commons-logging-1.1.1.jar fre

ssm框架jar依賴

新增的jar包依賴名 <dependencies>        <!-- 測試用的包 -->        <dependency>            <groupId>junit</groupId>     

java 讀取Exceljar

                       包地址:http://download.csdn.net/detail/xiaoshixiu/9446010              中間三個包是poi相關包,用於處理xls和xlsx等Excel檔案,但是僅僅這兩個不夠

SSM整合jar

1.3 pre express 表達 repo 博文 校驗 版權 freemark MySql驅動包 mysql-connector-java-5.1.7-bin.jar MyBatis的核心包和依賴包 mybatis-3.2.7.jar(核心包)a

07_資料庫建立新增c3p0操作jar編寫c3p0-config.xml檔案編寫User.java,編寫jdbcUtils.java實現操作資料庫模板工具UserDao編寫Dao

 1建立day14資料庫,建立user.sql表: A 建立資料庫 day14 B 建立資料表 users createtable users ( id

eclipse下使用java api 進行hbase的常用的操作jar以及如何檢視java build path下的jar是否使用

對於學習hbase的初學者來說,使用java開發的時候很多朋友直接將hbase/lib下面的所有jar包全部都匯入java build path-->libraries中,但實際上常用的操作,比如建表,刪表,使用各種濾波器進行各種查詢等操作用的jar不多,大部分匯入的

Android Service完全解析關於服務你知道的一切(下)

並且 無法 數據類型 界面 其它 wid logcat listen 程序崩潰 文章轉載至:http://blog.csdn.net/guolin_blog/article/details/9797169 這是郭霖寫的.......就是寫 "第一行代碼"的那個厲害人物,大

Android Service完全解析關於服務你知道的一切(上)(筆記)

參考原文:Android Service完全解析,關於服務你所需知道的一切(上) Service的基本用法 然後新建一個MyService繼承自Service,並重寫父類的onCreate()、onStartCommand()和onDestroy()方法, 可以看到,在Sta

Python中自己寫一個計時器計算一個過程秒數

import time import sys import numpy as np i = np.arange(1, 5000) def k_timer(bool_start_end, start_time): if bool_start_end: return tim

SQL server中刪除synonym時報不存在或者您沒有的許可權

sql server 2008  使用sa登入的。建立了synonym成了,但是刪除時發生下面的錯誤資訊: 建立>create synonym dbo.test1  for table_test; 檢視所有同義詞>select * 

Android Fragment完全解析關於碎片你知道的一切

我們都知道,Android上的介面展示都是通過Activity實現的,Activity實在是太常用了,我相信大家都已經非常熟悉了,這裡就不再贅述。但是Activity也有它的侷限性,同樣的介面在手機上顯示可能很好看,在平板上就未必了,因為平板的螢幕非常大,手機的介面放在平板上

Android Scroller完全解析關於Scroller你知道的一切

轉載請註明出處:http://blog.csdn.net/guolin_blog/article/details/48719871 2016大家新年好!這是今年的第一篇文章,那麼應CSDN工作人員的建議,為了能給大家帶來更好的閱讀體驗,我也是將部落格換成了寬屏

Android Service完全解析關於服務你知道的一切(上)

相信大多數朋友對Service這個名詞都不會陌生,沒錯,一個老練的Android程式設計師如果連Service都沒聽說過的話,那確實也太遜了。Service作為Android四大元件之一,在每一個應用程式中都扮演著非常重要的角色。它主要用於在後臺處理一些耗時的邏輯,或者去執行