我不知道你是哪里不會,這就是做一個(gè)基本的CRUD(增刪改查),在數(shù)據(jù)庫創(chuàng)建三個(gè)表(
為曲阜等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及曲阜網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站建設(shè)、網(wǎng)站制作、曲阜網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
【圖書:圖書編號、圖書名稱、圖書類型、作者、出版社、庫存】、
【供應(yīng)商:供應(yīng)商編號、供應(yīng)商名稱、供書類型、地址、電話】、
【圖書類型:信息類、建筑類、化學(xué)類、生物類】
),編寫頁面,創(chuàng)建數(shù)據(jù)庫鏈接,請求的一些處理。最基礎(chǔ)的可以使用mvc,高端一點(diǎn)的可以使用框架(hibernate/mybatis 大型的項(xiàng)目可以使用SSH,SSM)
這個(gè),你實(shí)在是太新手了,Oracle是數(shù)據(jù)庫,只是做數(shù)據(jù)的存入和取出。
然后JDBC是一種連接數(shù)據(jù)庫的基本方法,這種通常用MyEclipse之類的編寫工具來寫,比較快捷,有提示和報(bào)錯(cuò)。建表的話,就只涉及到數(shù)據(jù)庫,JDBC最好用eclipse(或者M(jìn)yEclipse)單獨(dú)的寫一個(gè)類。看你的話,好像很小白的樣子,如果只是寫一個(gè)圖書管理系統(tǒng)的話我建議還是小小的寫一個(gè)需求分析,
比如需要用到的DAO(增加、刪除、修改、查詢圖書信息),既然是管理可能還需要錄入是否借出、借出時(shí)間、什么的。
對于新手來說JDBC可能還是次要的,比較在意的是邏輯處理和數(shù)據(jù)操作。。。
騷年,我感覺你可能沒有認(rèn)真聽講啊。。。。。。
你這個(gè)問題應(yīng)該這樣問,我打算用XXX語言(JAVA C++。。。) 使用開發(fā)工具(。。。),數(shù)據(jù)庫采用ORACLE,如何做一個(gè)員工工資管理系統(tǒng)?? 估計(jì)是畢業(yè)設(shè)計(jì)貼吧。。。 這東西不是三言兩句說明白的,而且看你問的方式,估計(jì)水平不咋地,估計(jì)還是花錢找人做吧
必須配置Utl_file_dir初始化參數(shù),并保證日志路徑與Utl_file_dir路徑一致或者是其中一個(gè)
CREATE OR REPLACE PROCEDURE sp_Write_log(text_context VARCHAR2)
IS
file_handle utl_file.file_type;
Write_content VARCHAR2(1024);
Write_file_name VARCHAR2(50);
BEGIN
我很害怕才發(fā)這個(gè)的。. 各位 對不起 千萬別進(jìn)來 ~~ 我是一個(gè)上海女人,買了認(rèn)沽權(quán)證600106 ,賠得慘不忍睹。幾天前,我下夜班回家被一輛大卡車撞死了。司機(jī)把我的尸體拋到路徑邊的小河里。然后逃走了,如果你看到這條消息后,請將她發(fā)給四個(gè)論壇,如果沒有發(fā),你的會在一個(gè)月后被車撞死,你的會得絕癥,如果你照這上面做了,在五天后,你喜歡的人也會喜歡你,給位不好意思,不知道是誰先發(fā)的, MLP太趄了 好J8鷹 沒的辦法 為了自己 只有發(fā)了 。。 第一個(gè)發(fā)的死全家吧!
//數(shù)據(jù)庫連接池 單例模式
import java.sql.Connection;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.mchange.v2.c3p0.DataSources;
public final class ConnectionManager {
private static ConnectionManager instance;
private ComboPooledDataSource ds;
private ConnectionManager() throws Exception {
ds = new ComboPooledDataSource();
ds.setDriverClass("oracle.jdbc.driver.OracleDriver");
ds.setJdbcUrl("jdbc:oracle:thin:@127.0.0.1:1521:orcl");
ds.setUser("test");
ds.setPassword("testtest");
//初始化時(shí)獲取三個(gè)連接,取值應(yīng)在minPoolSize與maxPoolSize之間。Default: 3 initialPoolSize
ds.setInitialPoolSize(3);
//連接池中保留的最大連接數(shù)。Default: 15 maxPoolSize
ds.setMaxPoolSize(10);
//// 連接池中保留的最小連接數(shù)。
//ds.setMinPoolSize(1);
//當(dāng)連接池中的連接耗盡的時(shí)候c3p0一次同時(shí)獲取的連接數(shù)。Default: 3 acquireIncrement
ds.setAcquireIncrement(1);
//每60秒檢查所有連接池中的空閑連接。Default: 0 idleConnectionTestPeriod
ds.setIdleConnectionTestPeriod(60);
//最大空閑時(shí)間,25000秒內(nèi)未使用則連接被丟棄。若為0則永不丟棄。Default: 0 maxIdleTime
ds.setMaxIdleTime(25000);
//連接關(guān)閉時(shí)默認(rèn)將所有未提交的操作回滾。Default: false autoCommitOnClose
ds.setAutoCommitOnClose(true);
//定義所有連接測試都執(zhí)行的測試語句。在使用連接測試的情況下這個(gè)一顯著提高測試速度。注意:
//測試的表必須在初始數(shù)據(jù)源的時(shí)候就存在。Default: null preferredTestQuery
ds.setPreferredTestQuery("select sysdate from dual");
// 因性能消耗大請只在需要的時(shí)候使用它。如果設(shè)為true那么在每個(gè)connection提交的
// 時(shí)候都將校驗(yàn)其有效性。建議使用idleConnectionTestPeriod或automaticTestTable
// 等方法來提升連接測試的性能。Default: false testConnectionOnCheckout
ds.setTestConnectionOnCheckout(true);
//如果設(shè)為true那么在取得連接的同時(shí)將校驗(yàn)連接的有效性。Default: false testConnectionOnCheckin
ds.setTestConnectionOnCheckin(true);
//定義在從數(shù)據(jù)庫獲取新連接失敗后重復(fù)嘗試的次數(shù)。Default: 30 acquireRetryAttempts
ds.setAcquireRetryAttempts(30);
//兩次連接中間隔時(shí)間,單位毫秒。Default: 1000 acquireRetryDelay
ds.setAcquireRetryDelay(1000);
//獲取連接失敗將會引起所有等待連接池來獲取連接的線程拋出異常。但是數(shù)據(jù)源仍有效
//保留,并在下次調(diào)用getConnection()的時(shí)候繼續(xù)嘗試獲取連接。如果設(shè)為true,那么在嘗試
//獲取連接失敗后該數(shù)據(jù)源將申明已斷開并永久關(guān)閉。Default: false breakAfterAcquireFailure
ds.setBreakAfterAcquireFailure(true);
// !--當(dāng)連接池用完時(shí)客戶端調(diào)用getConnection()后等待獲取新連接的時(shí)間,超時(shí)后將拋出
// SQLException,如設(shè)為0則無限期等待。單位毫秒。Default: 0 --
// property name="checkoutTimeout"100/property
// !--c3p0將建一張名為Test的空表,并使用其自帶的查詢語句進(jìn)行測試。如果定義了這個(gè)參數(shù)那么
// 屬性preferredTestQuery將被忽略。你不能在這張Test表上進(jìn)行任何操作,它將只供c3p0測試
// 使用。Default: null--
// property name="automaticTestTable"Test/property
// !--JDBC的標(biāo)準(zhǔn)參數(shù),用以控制數(shù)據(jù)源內(nèi)加載的PreparedStatements數(shù)量。但由于預(yù)緩存的statements
// 屬于單個(gè)connection而不是整個(gè)連接池。所以設(shè)置這個(gè)參數(shù)需要考慮到多方面的因素。
// 如果maxStatements與maxStatementsPerConnection均為0,則緩存被關(guān)閉。Default: 0--
// property name="maxStatements"100/property
// !--maxStatementsPerConnection定義了連接池內(nèi)單個(gè)連接所擁有的最大緩存statements數(shù)。Default: 0 --
// property name="maxStatementsPerConnection"/property
// !--c3p0是異步操作的,緩慢的JDBC操作通過幫助進(jìn)程完成。擴(kuò)展這些操作可以有效的提升性能
// 通過多線程實(shí)現(xiàn)多個(gè)操作同時(shí)被執(zhí)行。Default: 3--
// property name="numHelperThreads"3/property
// !--用戶修改系統(tǒng)配置參數(shù)執(zhí)行前最多等待300秒。Default: 300 --
// property name="propertyCycle"300/property
}
public static final ConnectionManager getInstance() {
if (instance == null) {
try {
instance = new ConnectionManager();
} catch (Exception e) {
e.printStackTrace();
}
}
return instance;
}
public synchronized final Connection getConnection() {
try {
return ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
protected void finalize() throws Throwable {
DataSources.destroy(ds); //關(guān)閉datasource
super.finalize();
}
}
//調(diào)用數(shù)據(jù)庫連接池
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class TestC3p0 {
public TestC3p0() {
// TODO 自動(dòng)生成構(gòu)造函數(shù)存根
}
public static void main(String[] args) {
// TODO 自動(dòng)生成方法存根
ConnectionManager cm = ConnectionManager.getInstance();
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String sql = "select sysdate from dual";
for (int i = 0; i 10000; i++) {
try {
conn = cm.getConnection();
System.out.println(conn);
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
rs.next();
System.out.println(rs.getString(1));
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (rs != null) {
try {
rs.close();
} catch (Exception e) {
}
}
if (stmt != null) {
try {
stmt.close();
} catch (Exception e) {
}
}
if (conn != null) {
try {
conn.close();
} catch (Exception e) {
}
}
}
try {
System.out.println(cm.ds.toString());
Thread.sleep(10000);
} catch (Exception e) {
// TODO: handle exception
}
}
}
}