❶ 請問資料庫有哪些種類呢
資料庫可以從是否是關系型維度來區分,也可以從面向操作或面向數據分析方面來區分。
Operational-Relational Database:
典型應用場景: ERP, CRM, 信用卡交易處理, 小型電子商務
數據存儲方式: 表格
主流廠商: Oracle Database, Microsoft SQL Server, IBM DB2, SAP Hana, Amazon Aurora, Azure SQL Database, Enterprise DB (PostgreSQL), MySQL, MemSQL
優勢:成熟的生態環境,事務保證/數據一致性
劣勢:嚴格的數據模型定義,資料庫擴展限制,與非結構化的融合使用較難。
Analytical-Relational Database:
典型應用場景: 數據倉庫,商務智能,數據科學
數據存儲方式: 表格
主流廠商: Oracle Exadata, Oracle Hyperion, Teradata, IBM Netezza, IBM dashDB, Amazon Redshift, Microsoft SQL Data Warehouse, Google BigQuery
優勢: 信息和計算的一致性
劣勢: 需要針對資料庫專業的IT人員維護,數據響應數據通常在分鍾級
Operational-Nonrelational Database:
典型應用場景: Web, mobile, and IoT applications, social networking, user recommendations, shopping carts
數據存儲方式: 有很多存儲結構 (document, graph, column, key-value, time series)
主流廠商: MongoDB, Amazon DynamoDB, Amazon,DocumentDB, Azure CosmosDB, DataStax, Neo4j, Couchbase, MarkLogic, Redis
優勢: 易用性,靈活性(不需要預定義的模式),水平伸縮(以適應大量數據量),一般低成本(開源)
劣勢: 缺乏事務保證
Analytical -Nonrelational Database:
典型應用場景: 索引數以百萬計的數據點,預測性分析,欺詐檢測
數據存儲方式: Hadoop不需要固有的數據結構; 數據可以跨多個伺服器存儲
主流廠商: Cloudera, Hortonworks, MapR, MarkLogic, Snowflake, DataBricks, ElasticSearch
優勢: 適合批量處理, 並行處理文件; 主要是開源的,投入較低
劣勢: 緩慢的響應時間; 不適合快速查找或快速更新
❷ 資料庫有哪幾種
一、關系資料庫
關系型資料庫,存儲的格式可以直觀地反映實體間的關系。關系型資料庫和常見的表格比較相似,關系型資料庫中表與表之間是有很多復雜的關聯關系的。
常見的關系型資料庫有Mysql,SqlServer等。在輕量或者小型的應用中,使用不同的關系型資料庫對系統的性能影響不大,但是在構建大型應用時,則需要根據應用的業務需求和性能需求,選擇合適的關系型資料庫。
雖然關系型資料庫有很多,但是大多數都遵循SQL(結構化查詢語言,Structured Query Language)標准。 常見的操作有查詢,新增,更新,刪除,求和,排序等。
查詢語句:SELECT param FROM table WHERE condition 該語句可以理解為從 table 中查詢出滿足 condition 條件的欄位 param。
新增語句:INSERT INTO table (param1,param2,param3) VALUES (value1,value2,value3) 該語句可以理解為向table中的param1,param2,param3欄位中分別插入value1,value2,value3。
更新語句:UPDATE table SET param=new_value WHERE condition 該語句可以理解為將滿足condition條件的欄位param更新為 new_value 值。
刪除語句:DELETE FROM table WHERE condition 該語句可以理解為將滿足condition條件的數據全部刪除。
去重查詢:SELECT DISTINCT param FROM table WHERE condition 該語句可以理解為從表table中查詢出滿足條件condition的欄位param,但是param中重復的值只能出現一次。
排序查詢:SELECT param FROM table WHERE condition ORDER BY param1該語句可以理解為從表table 中查詢出滿足condition條件的param,並且要按照param1升序的順序進行排序。
總體來說, 資料庫的SELECT,INSERT,UPDATE,DELETE對應了我們常用的增刪改查四種操作。
關系型資料庫對於結構化數據的處理更合適,如學生成績、地址等,這樣的數據一般情況下需要使用結構化的查詢,例如join,這樣的情況下,關系型資料庫就會比NoSQL資料庫性能更優,而且精確度更高。
由於結構化數據的規模不算太大,數據規模的增長通常也是可預期的,所以針對結構化數據使用關系型資料庫更好。關系型資料庫十分注意數據操作的事務性、一致性,如果對這方面的要求關系型資料庫無疑可以很好的滿足。
二、非關系型資料庫(NoSQL)
隨著近些年技術方向的不斷拓展,大量的NoSql資料庫如MongoDB、Redis、Memcache出於簡化資料庫結構、避免冗餘、影響性能的表連接、摒棄復雜分布式的目的被設計。
指的是分布式的、非關系型的、不保證遵循ACID原則的數據存儲系統。NoSQL資料庫技術與CAP理論、一致性哈希演算法有密切關系。所謂CAP理論,簡單來說就是一個分布式系統不可能滿足可用性、一致性與分區容錯性這三個要求,一次性滿足兩種要求是該系統的上限。
而一致性哈希演算法則指的是NoSQL資料庫在應用過程中,為滿足工作需求而在通常情況下產生的一種數據演算法,該演算法能有效解決工作方面的諸多問題但也存在弊端,即工作完成質量會隨著節點的變化而產生波動,當節點過多時,相關工作結果就無法那麼准確。
這一問題使整個系統的工作效率受到影響,導致整個資料庫系統的數據亂碼與出錯率大大提高,甚至會出現數據節點的內容遷移,產生錯誤的代碼信息。
但盡管如此,NoSQL資料庫技術還是具有非常明顯的應用優勢,如資料庫結構相對簡單,在大數據量下的讀寫性能好;能滿足隨時存儲自定義數據格式需求,非常適用於大數據處理工作。
NoSQL資料庫適合追求速度和可擴展性、業務多變的應用場景。
對於非結構化數據的處理更合適,如文章、評論,這些數據如全文搜索、機器學習通常只用於模糊處理,並不需要像結構化數據一樣,進行精確查詢,而且這類數據的數據規模往往是海量的,數據規模的增長往往也是不可能預期的;
而NoSQL資料庫的擴展能力幾乎也是無限的,所以NoSQL資料庫可以很好的滿足這一類數據的存儲。
NoSQL資料庫利用key-value可以大量的獲取大量的非結構化數據,並且數據的獲取效率很高,但用它查詢結構化數據效果就比較差。
目前NoSQL資料庫仍然沒有一個統一的標准,它現在有四種大的分類:
1、鍵值對存儲(key-value):代表軟體Redis,它的優點能夠進行數據的快速查詢,而缺點是需要存儲數據之間的關系。
2、列存儲:代表軟體Hbase,它的優點是對數據能快速查詢,數據存儲的擴展性強。而缺點是資料庫的功能有局限性。
3、文檔資料庫存儲:代表軟體MongoDB,它的優點是對數據結構要求不特別的嚴格。而缺點是查詢性的性能不好,同時缺少一種統一查詢語言。
4、圖形資料庫存儲:代表軟體InfoGrid,它的優點可以方便的利用圖結構相關演算法進行計算。而缺點是要想得到結果必須進行整個圖的計算,而且遇到不適合的數據模型時,圖形資料庫很難使用。

安全
資料庫安全涉及保護資料庫內容、其所有者和用戶的所有各個方面。它的范圍從防止有意的未經授權的資料庫使用到未經授權的實體(例如,個人或計算機程序)無意的資料庫訪問。
資料庫訪問控制涉及控制誰(一個人或某個計算機程序)可以訪問資料庫中的哪些信息。該信息可以包括特定的資料庫對象(例如,記錄類型、特定記錄、數據結構);
對特定對象的特定計算(例如,查詢類型或特定查詢),或者使用到前者的特定訪問路徑(例如,使用特定索引)或其他數據結構來訪問信息)。
資料庫訪問控制由使用專用受保護安全 DBMS 介面的特別授權(由資料庫所有者)人員設置。
這可以在個人基礎上直接管理,或者通過將個人和特權分配給組,或者(在最復雜的模型中)通過將個人和組分配給角色,然後授予權利。數據安全可防止未經授權的用戶查看或更新資料庫。使用密碼,用戶可以訪問整個資料庫或它的子集,稱為「子模式」。
例如,員工資料庫可以包含有關單個員工的所有數據,但一組用戶可能僅被授權查看工資數據,而其他用戶僅被允許訪問工作歷史和醫療數據。如果 DBMS 提供了一種互動式輸入和更新資料庫以及查詢資料庫的方法,則此功能允許管理個人資料庫。
數據安全通常涉及保護特定的數據塊,包括物理保護(即免受損壞、破壞或移除;例如,參見物理安全),或將它們或它們的一部分解釋為有意義的信息(例如,通過查看它們組成的位串,得出特定的有效信用卡號;例如,參見數據加密)。
更改和訪問日誌記錄誰訪問了哪些屬性、更改了什麼以及何時更改。日誌服務通過保留訪問發生和更改的記錄,允許以後進行取證資料庫審計。有時應用程序級代碼用於記錄更改而不是將其留給資料庫。可以設置監控以嘗試檢測安全漏洞。
以上內容參考網路-資料庫
❸ 機械設計常用資料庫有哪些
標准件庫、通用件庫(各個行業不同)
❹ 資料庫都有哪些
資料庫是一組信息的集合,以便可以方便地訪問、管理和更新,常用資料庫有:1、關系型資料庫;2、分布式資料庫;3、雲資料庫;4、NoSQL資料庫;5、面向對象的資料庫;6、圖形資料庫。

計算機資料庫通常包含數據記錄或文件的聚合,例如銷售事務、產品目錄和庫存以及客戶配置文件。
通常,資料庫管理器為用戶提供了控制讀寫訪問、指定報表生成和分析使用情況的能力。有些資料庫提供ACID(原子性、一致性、隔離性和持久性)遵從性,以確保數據的一致性和事務的完整性。
資料庫普遍存在於大型主機系統中,但也存在於較小的分布式工作站和中端系統中,如IBM的as /400和個人計算機。
資料庫的演變
資料庫從1960年代開始發展,從層次資料庫和網路資料庫開始,到1980年代的面向對象資料庫,再到今天的SQL和NoSQL資料庫和雲資料庫。
一種觀點認為,資料庫可以按照內容類型分類:書目、全文、數字和圖像。在計算中,資料庫有時根據其組織方法進行分類。有許多不同類型的資料庫,從最流行的方法關系資料庫到分布式資料庫、雲資料庫或NoSQL資料庫。
常用資料庫:
1、關系型資料庫
關系型資料庫是由IBM的E.F. Codd於1970年發明的,它是一個表格資料庫,其中定義了數據,因此可以以多種不同的方式對其進行重組和訪問。
關系資料庫由一組表組成,其中的數據屬於預定義的類別。每個表在一個列中至少有一個數據類別,並且每一行對於列中定義的類別都有一個特定的數據實例。
結構化查詢語言(SQL)是關系資料庫的標准用戶和應用程序介面。關系資料庫易於擴展,並且可以在原始資料庫創建之後添加新的數據類別,而不需要修改所有現有應用程序。
2、分布式資料庫
分布式資料庫是一種資料庫,其中部分資料庫存儲在多個物理位置,處理在網路中的不同點之間分散或復制。
分布式資料庫可以是同構的,也可以是異構的。同構分布式資料庫系統中的所有物理位置都具有相同的底層硬體,並運行相同的操作系統和資料庫應用程序。異構分布式資料庫中的硬體、操作系統或資料庫應用程序在每個位置上可能是不同的。
3、雲資料庫
雲資料庫是針對虛擬化環境(混合雲、公共雲或私有雲)優化或構建的資料庫。雲資料庫提供了一些好處,比如可以按每次使用支付存儲容量和帶寬的費用,還可以根據需要提供可伸縮性和高可用性。
雲資料庫還為企業提供了在軟體即服務部署中支持業務應用程序的機會。
4、NoSQL資料庫
NoSQL資料庫對於大型分布式數據集非常有用。
NoSQL資料庫對於關系資料庫無法解決的大數據性能問題非常有效。當組織必須分析大量非結構化數據或存儲在雲中多個虛擬伺服器上的數據時,它們是最有效的。
5、面向對象的資料庫
使用面向對象編程語言創建的項通常存儲在關系資料庫中,但是面向對象資料庫非常適合於這些項。
面向對象的資料庫是圍繞對象(而不是操作)和數據(而不是邏輯)組織的。例如,關系資料庫中的多媒體記錄可以是可定義的數據對象,而不是字母數字值。
6、圖形資料庫
面向圖形的資料庫是一種NoSQL資料庫,它使用圖形理論存儲、映射和查詢關系。圖資料庫基本上是節點和邊的集合,其中每個節點表示一個實體,每個邊表示節點之間的連接。
圖形資料庫在分析互連方面越來越受歡迎。例如,公司可以使用圖形資料庫從社交媒體中挖掘關於客戶的數據。
訪問資料庫:DBMS和RDBMS
資料庫管理系統(DBMS)是一種允許您定義、操作、檢索和管理存儲在資料庫中的數據的軟體。
關系資料庫管理系統(RDBMS)是上世紀70年代開發的一種基於關系模型的資料庫管理軟體,目前仍然是最流行的資料庫管理方法。
Microsoft SQL Server、Oracle資料庫、IBM DB2和MySQL是企業用戶最常用的RDBMS產品。DBMS技術始於20世紀60年代,支持分層資料庫,包括IBM的信息管理系統和CA的集成資料庫管理系統。一個關系資料庫管理系統(RDBMS)是一種資料庫管理軟體是在20世紀70年代開發的,基於關系模式,仍然是管理資料庫的最普遍的方式。
希望能幫助你還請及時採納謝謝
❺ 資料庫有哪些
目前比較常見的資料庫:
SQL是用於訪問和處理資料庫的標準的計算機語言。
MySQL是小型的開源的關系型資料庫管理系統。
SQL Server 是 Microsoft 開發的關系資料庫管理系統。
Oracle資料庫系統是目前世界上流行的關系資料庫管理系統。
DB2是關系型資料庫平台,其採用多進程多線索的結構,支持多用戶或應用程序在同一條SQL 語句中查詢不同資料庫和數據。
PostgreSQL 是一個對象-關系資料庫伺服器,號稱 "世界上最先進的開源關系型資料庫"。
Hadoop是個很流行的分布式計算解決方案,Hive是基於hadoop的數據倉庫工具,hive 構建在基於靜態批處理的Hadoop 之上。
GreenPlum採用了MPP(大規模並行處理),是一個由多個獨立的資料庫服務組合成關系型資料庫集群。
ECharts 是一個使用 JavaScript 實現的開源可視化庫,涵蓋各行業圖表。
R是一種集統計分析與圖形顯示為一體的統計分析軟體,具有很強的互動性。
python是一種跨平台的計算機程序設計語言,被廣泛用於系統管理任務的處理和Web編程。
目前,這些資料庫都在樹懶學堂有相關教程,可以跟著一步一步學習
❻ 資料庫都有哪些有幾種呀
VF
access
mysql
===
這些z在www.iyuanma.com這里都下的
還有不少有關這方面的資料
❼ 什麼是資料庫
什麼是資料庫?
資料庫是以某種文件結構存儲的一系列信息表,這種文件結構使您能夠訪問這些表、選擇表中的列、對表進行排序以及根據各種標准選擇行。資料庫通常有多個 索引與這些表中的許多列相關聯,所以我們能盡可能快地訪問這些表。
以員工記錄為例,您可以設想一個含有員工姓名、地址、工資、扣稅以及津貼等內容的表。讓我們考慮一下這些內容可能如何組織在一起。您可以設想一個表包含員工姓名、地址和電話號碼。您希望保存的其它信息可能包括工資、工資范圍、上次加薪時間、下次加薪時間、員工業績評定等內容。
這些內容是否應保存在一個表格中?幾乎可以肯定不應該如此。不同類別的員工的工資范圍可能沒有區別;這樣,您可以僅將員工類型儲存在員工記錄表中,而將工資范圍儲存在另一個表中,通過類型編號與這個表關聯。考慮以下情況:
Key Lastname SalaryType SalaryType Min Max
1 Adams 2 1 30000 45000
2 Johnson 1 2 45000 60000
3 Smyth 3 3 60000 75000
4 Tully 1
5 Wolff 2
SalaryType 列中的數據引用第二個表。我們可以想像出許多種這樣的表,如用於存儲居住城市和每個城市的稅值、健康計劃扣除金額等的表。每個表都有一個主鍵列(如上面兩個表中最左邊的列)和若干數據列。在資料庫中建立表格既是一門藝術,也是一門科學。這些表的結構由它們的範式指出。我們通常說表屬於1NF、2NF 或 3NF。
第一範式:表中的每個表元應該只有一個值(永遠不可能是一個數組)。(1NF)
第二範式:滿足 1NF,並且每一個非主鍵列完全依賴於主鍵列。這表示主鍵和該行中的剩餘表元之間是 1 對 1 的關系。(2NF)
第三範式:滿足 2NF,並且所有非主鍵列是互相獨立的。任何一個數據列中包含的值都不能從其他列的數據計算得到。(3NF)
現在,幾乎所有的資料庫都是基於「第三範式 (3NF)」創建的。這意味著通常都有相當多的表,每個表中的信息列都相對較少。
從資料庫中獲取數據
假設我們希望生成一個包含員工及其工資范圍的表,在我們設計的一個練習中將使用這個表。這個表格不是直接存在在資料庫中,但可以通過向資料庫發出一個查詢來構建它。我們希望得到如下所示的一個表:
Name Min Max
Tully $30,000.00 $45,000.00
Johnson $30,000.00 $45,000.00
Wolff $45,000.00 $60,000.00
Adams $45,000.00 $60,000.00
Smyth $60,000.00 $75,000.00
我們發現,獲得這些表的查詢形式如下所示
SELECT DISTINCTROW Employees.Name, SalaryRanges.Min,
SalaryRanges.Max FROM Employees INNER JOIN SalaryRanges ON Employees.SalaryKey = SalaryRanges.SalaryKey
ORDER BY SalaryRanges.Min;
這種語言稱為結構化查詢語言,即 SQL,而且它是幾乎目前所有資料庫都可以使用的一種語言。SQL-92 標准被認為是一種基礎標准,而且已更新多次。
資料庫的種類
PC 上的資料庫,如 dBase、Borland Paradox、Microsoft Access 和 FoxBase。
資料庫伺服器:IBM DB/2、Microsoft SQL Server、 Oracle、Sybase、SQLBase 和 XDB。
所有這些資料庫產品都支持多種相對類似的 SQL 方言,因此,所有資料庫最初看起來好象可以互換。每種資料庫都有不同的性能特徵,而且每一種都有不同的用戶界面和編程介面。
ODBC
如果我們能夠以某種方式編寫不依賴於特定廠商的資料庫的代碼,並且能夠不改變自己的調用程序即可從這些資料庫中得到相同的結果,那將是一件很好的事。如果我們可以僅為所有這些資料庫編寫一些封裝,使它們具有相似的編程介面,這種對資料庫編程獨立於供應商的特性將很容易實現。
什麼是 JDBC?
JDBC 是對 ODBC API 進行的一種面向對象的封裝和重新設計,它易於學習和使用,並且它真正能夠使您編寫不依賴廠商的代碼,用以查詢和操縱資料庫。盡管它與所有 Java API 一樣,都是面向對象的,但它並不是很高級別的對象集.
除 Microsoft 之外,多數廠商都採用了 JDBC,並為其資料庫提供了 JDBC 驅動程序;這使您可輕松地真正編寫幾乎完全不依賴資料庫的代碼。另外,JavaSoft 和 Intersolv 已開發了一種稱為 JDBC-ODBC Bridge 的產品,可使您連接還沒有直接的 JDBC 驅動程序的資料庫。支持 JDBC 的所有資料庫必須至少可以支持 SQL-92 標准。這在很大程度上實現了跨資料庫和平台的可移植性。
安裝和使用 JDBC
JDBC 的類都被歸到 java.sql 包中,在安裝 Java JDK 1.4時會自動安裝。然而,如果您想使用 JDBC-ODBC 橋。JDBC-ODBC 驅動程序可從 Sun 的 Java 網站 (http://java.sun.com/) 輕松地找到並下載。在您擴充並安裝了這個驅動程序後,必須執行下列步驟:
將 \jdbc-odbc\classes; 路徑添加到您的 PATH 環境變數中。
將 \jdbc-odbc\classes; 路徑添加到您的 CLASSPATH 環境變數中。
JDBC 驅動程序的類型
Java 程序連接資料庫的方法實際上有四種:
1. JDBC-ODBC 橋和 ODBC 驅動程序 -- 在這種方式下,這是一個本地解決方案,因為 ODBC 驅動程序和橋代碼必須出現在用戶的每台機器中。從根本上說這是一個臨時解決方案。
2. 本機代碼和 Java 驅動程序 -- 它用另一個本地解決方案(該平台上的 Java 可調用的本機代碼)取代 ODBC 和 JDBC-ODBC 橋。
3. JDBC 網路的純 Java 驅動程序 -- 由 Java 驅動程序翻譯的 JDBC 形成傳送給伺服器的獨立協議。然後,伺服器可連接任何數量的資料庫。這種方法使您可能從客戶機 Applet 中調用伺服器,並將結果返回到您的 Applet。在這種情況下,中間件軟體提供商可提供伺服器。
4. 本機協議 Java 驅動程序 -- Java 驅動程序直接轉換為該資料庫的協議並進行調用。這種方法也可以通過網路使用,而且可以在 Web 瀏覽器的 Applet 中顯示結果。在這種情況下,每個資料庫廠商將提供驅動程序。
如果您希望編寫代碼來處理 PC 客戶機資料庫,如 dBase、Foxbase 或 Access,則您可能會使用第一種方法,並且擁有用戶機器上的所有代碼。更大的客戶機-伺服器資料庫產品(如 IBM 的 DB2)已提供了第 3 級別的驅動程序。
兩層模型和三層模型
當資料庫和查詢它的應用程序在同一台機器上,而且沒有伺服器代碼的干預時,我們將生成的程序稱為兩層模型。一層是應用程序,而另一層是資料庫。在 JDBC-ODBC 橋系統中通常是這種情況。
當一個應用程序或 applet 調用伺服器,伺服器再去調用資料庫時,我們稱其為三層模型。當您調用稱為「伺服器」的程序時通常是這種情況。
編寫 JDBC 代碼訪問資料庫
用 ODBC 注冊您的資料庫
連接資料庫
所有與資料庫有關的對象和方法都在 java.sql 包中,因此在使用 JDBC 的程序中必須加入 "import java.sql.* "。 JDBC 要連接 ODBC 資料庫,您必須首先載入 JDBC-ODBC 橋驅動程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
該語句載入驅動程序,並創建該類的一個實例。然後,要連接一個特定的資料庫,您必須創建 Connect 類的一個實例,並使用 URL 語法連接資料庫。
String url = "jdbc:odbc:Northwind";
Connection con = DriverManager.getConnection(url);
請注意,您使用的資料庫名是您在 ODBC 設置面板中輸入的「數據源」名稱。
URL 語法可能因資料庫類型的不同而變化極大。
jdbc:subprotocol:subname
第一組字元代表連接協議,並且始終是 jdbc。還可能有一個子協議,在此處,子協議被指定為 odbc。它規定了一類資料庫的連通性機制。如果您要連接其它機器上的資料庫伺服器,可能也要指定該機器和一個子目錄:
jdbc:bark//doggie/elliott
最後,您可能要指定用戶名和口令,作為連接字元串的一部分:
jdbc:bark//doggie/elliot;UID=GoodDog;PWD=woof
訪問MSSQL Server方法:(驅動程序需要:msutil.jar,msbase.jar,mssqlServer.jar)
DBDriver=com.microsoft.jdbc.sqlserver.SQLServerDriver
URL=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=demo
username=sa
password=
maxcon=10
mincon=1
poolName=SkyDev
利用我們開發的資料庫類,使用方法如下:
DbObject DbO = new DbObject(new SqlServerConnectionFactory("localhost",
1433, "demo", "sa", ""));
Connection con = DbO.getConnection();
//類代碼(不含連接工廠實現)
package skydev.moles.data;
public final class SqlServerConnectionFactory
extends ConnectionFactory {
private final String dbDriver =
"com.microsoft.jdbc.sqlserver.SQLServerDriver";
private String host;
private int port;
private String databaseName;
public SqlServerConnectionFactory() {
super.setDriverName(dbDriver);
}
/**
*
* @param host 資料庫所在的主機名:如"localhost"
* @param port SQL伺服器運行的埠號,如果使用預設值 1433,傳入一個負數即可
* @param databaseName 資料庫名稱
* @param userName 用戶名
* @param password 口令
*/
public SqlServerConnectionFactory(String host,
int port,
String databaseName,
String userName,
String password) {
this.setHost(host);
this.setPort(port);
this.setDatabaseName(databaseName);
this.setUserName(userName);
this.setPassword(password);
init();
}
private void init() {
super.setDriverName(dbDriver);
super.setUrl("jdbc:microsoft:sqlserver://" + host.trim() + ":" +
new Integer(port).toString() + ";DatabaseName=" +
databaseName.trim());
//super.setUrl("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=demo");
}
……
//------------------------------------------------------------------------------------
訪問MySQL的方法:
DBDriver=com.mysql.jdbc.Driver
URL=jdbc:mysql://localhost/demo
username=
password=
maxcon=5
mincon=1
poolName=zhengmao
訪問資料庫
一旦連接到資料庫,就可以請求表名以及表列的名稱和內容等信息,而且您可以運行 SQL 語句來查詢資料庫或者添加或修改其內容。可用來從資料庫中獲取信息的對象有:
DatabaseMetaData 有關整個資料庫的信息:表名、表的索引、資料庫產品的名稱和版本、資料庫支持的操作。
ResultSet 關於某個表的信息或一個查詢的結果。您必須逐行訪問數據行,但是您可以任何順序訪問列。
ResultSetMetaData 有關 ResultSet 中列的名稱和類型的信息。
盡管每個對象都有大量的方法讓您獲得資料庫元素的極為詳細的信息,但在每個對象中都有幾種主要的方法使您可獲得數據的最重要信息。然而,如果您希望看到比此處更多的信息,建議您學習文檔以獲得其餘方法的說明。
ResultSet
ResultSet 對象是 JDBC 中最重要的單個對象。從本質上講,它是對一個一般寬度和未知長度的表的一種抽象。幾乎所有的方法和查詢都將數據作為 ResultSet 返回。ResultSet 包含任意數量的命名列,您可以按名稱訪問這些列。它還包含一個或多個行,您可以按順序自上而下逐一訪問。在您使用 ResultSet 之前,必須查詢它包含多少個列。此信息存儲在 ResultSetMetaData 對象中。
//從元數據中獲得列數
ResultSetMetaData rsmd;
rsmd = results.getMetaData();
numCols = rsmd.getColumnCount();
當您獲得一個 ResultSet 時,它正好指向第一行之前的位置。您可以使用 next() 方法得到其他每一行,當沒有更多行時,該方法會返回 false。由於從資料庫中獲取數據可能會導致錯誤,您必須始終將結果集處理語句包括在一個 try 塊中。
您可以多種形式獲取 ResultSet 中的數據,這取決於每個列中存儲的數據類型。另外,您可以按列序號或列名獲取列的內容。請注意,列序號從 1 開始,而不是從 0 開始。ResultSet 對象的一些最常用方法如下所示。
getInt(int); 將序號為 int 的列的內容作為整數返回。
getInt(String); 將名稱為 String 的列的內容作為整數返回。
getFloat(int); 將序號為 int 的列的內容作為一個 float 型數返回。
getFloat(String); 將名稱為 String 的列的內容作為 float 型數返回。
getDate(int); 將序號為 int 的列的內容作為日期返回。
getDate(String); 將名稱為 String 的列的內容作為日期返回。
next(); 將行指針移到下一行。如果沒有剩餘行,則返回 false。
Close(); 關閉結果集。
getMetaData(); 返回 ResultSetMetaData 對象。
ResultSetMetaData
您使用 getMetaData() 方法從 ResultSet 中獲取 ResultSetMetaData 對象。您可以使用此對象獲得列的數目和類型以及每一列的名稱。
getColumnCount(); 返回 ResultSet 中的列數。
getColumnName(int); 返回列序號為 int 的列名。
getColumnLabel(int); 返回此列暗含的標簽。
isCurrency(int); 如果此列包含帶有貨幣單位的一個數字,則返回 true。
isReadOnly(int); 如果此列為只讀,則返回 true。
isAutoIncrement(int); 如果此列自動遞增,則返回 true。這類列通常為鍵,而且始終是只讀的。
getColumnType(int); 返回此列的 SQL 數據類型。這些數據類型包括
BIGINT
BINARY
BIT
CHAR
DATE
DECIMAL
DOUBLE
FLOAT
INTEGER
LONGVARBINARY
LONGVARCHAR
NULL
NUMERIC
OTHER
REAL
SMALLINT
TIME
TIMESTAMP
TINYINT
VARBINARY
VARCHAR
DatabaseMetaData
DatabaseMetaData 對象可為您提供整個資料庫的信息。您主要用它獲取資料庫中表的名稱,以及表中列的名稱。由於不同的資料庫支持不同的 SQL 變體,因此,也有多種方法查詢資料庫支持哪些 SQL 方法。
getCatalogs() 返回該資料庫中的信息目錄列表。使用 JDBC-ODBC Bridge 驅動程序,您可以獲得用 ODBC 注冊的資料庫列表。這很少用於 JDBC-ODBC 資料庫。
getTables(catalog, schema,tableNames, columnNames) 返回表名與 tableNames 相符而且列名與 columnNames 相符的所有表的說明。
getColumns(catalog, schema,tableNames, columnNames) 返回表名與 tableNames 相符而且列名與 columnNames 相符的所有表列說明。
getURL(); 獲得您所連接的 URL 名稱。
getDriverName(); 獲得您所連接的資料庫驅動程序的名稱。
獲取有關表的信息
您可以使用 DataBaseMetaData 的 getTables() 方法來獲取資料庫中表的信息。這個方法有如下4個 String 參數:
results =dma.getTables(catalog, schema, tablemask, types[]);
其中參數的意義是:
Catalog 要在其中查找表名的目錄名。對於 JDBC-ODBC 資料庫以及許多其他資料庫而言,可將其設置為 null。這些資料庫的目錄項實際上是它在文件系統中的絕對路徑名稱。
Schema 要包括的資料庫「方案」。許多資料庫不支持方案,而對另一些資料庫而言,它代表資料庫所有者的用戶名。一般將它設置為 null。
Tablemask 一個掩碼,用來描述您要檢索的表的名稱。如果您希望檢索所有表名,則將其設為通配符 %。請注意,SQL 中的通配符是 % 符號,而不是一般 PC 用戶的 * 符號。
types[] 這是描述您要檢索的表的類型的 String 數組。資料庫中通常包括許多用於內部處理的表,而對作為用戶的您沒什麼價值。如果它是空值,則您會得到所有這些表。如果您將其設為包含字元串「TABLES」的單元素數組,您將僅獲得對用戶有用的表格。
一個簡單的 JDBC 程序
我們已經學習了 JDBC 的所有基本功能,現在我們可以編寫一個簡單的程序,該程序打開資料庫,列印它的表名以及某一表列的內容,然後對該資料庫執行查詢。此程序如下所示:
package skydevkit;
import java.sql.*;
public class JdbcOdbc_test {
ResultSet results;
ResultSetMetaData rsmd;
DatabaseMetaData dma;
Connection con;
public JdbcOdbc_test() throws SQLException {
String url = "jdbc:odbc:Northwind";
try {
//載入 JDBC-ODBC 橋驅動程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(url);//連接資料庫
dma = con.getMetaData();//獲取資料庫的元數據
System.out.println("Connected to:" + dma.getURL());
System.out.println("Driver " + dma.getDriverName());
} catch (Exception e) {
System.out.println(e);
}
try {
Statement stmt = con.createStatement();
results = stmt.executeQuery("select * from 客戶;");
ResultSetMetaData resultMetaData = results.getMetaData();
int cols = resultMetaData.getColumnCount();
String resultRow = "";
for (int i = 1; i < cols; i++) {
resultRow += resultMetaData.getColumnName(i) + ";";
}
System.out.println(resultRow);
while (results.next()) {
resultRow = "";
for (int i = 1; i < cols; i++) {
try {
resultRow += results.getString(i) + ";";
} catch (NullPointerException e) {
System.out.println(e.getMessage());
}
}
System.out.println(resultRow);
}
} catch (Exception e) {
System.out.println("query exception");
} finally {
results.close();
}
}
}
補充高級內容
關於調用SQLServer存儲過程的例子:(用到了我們開發的資料庫連接類)
CREATE PROCEDURE [dbo].[sp_getStudentByName](@name char(10))
AS
Select * from Students where [Name]=@name
GO
DbObject DbO = new DbObject(new SqlServerConnectionFactory("localhost",
1433, "demo", "sa", ""));
Connection con = DbO.getConnection();
CallableStatement pstmt = null;
System.out.println("TestDB1()............");
/* try {
pstmt = con.prepareCall("{call sp_getStudentById(?)}");
pstmt.setInt(1, 1);
}*/
try {
pstmt = con.prepareCall("{call sp_getStudentByName(?)}"); //注意參數如何傳遞
pstmt.setString(1, "Tom");
}
……
使用輸出參數:
CREATE PROCEDURE [dbo].[sp_insertStudent](@name char(10),@age int,@id int OUTPUT) AS
insert into Students([Name],[Age]) values (@name,@age)
select @id=@@IDENTITY
GO
try {
pstmt = con.prepareCall("{call sp_insertStudent(?,?,?)}");
pstmt.setString(1, "zengqingsong");
pstmt.setInt(2, 22);
pstmt.registerOutParameter(3, Types.INTEGER);
pstmt.executeUpdate();
int id = pstmt.getInt(3);
System.out.println(id);
}
使用返回參數的例子:
CREATE PROCEDURE [dbo].[sp_insertStudent](@name char(10),@age int,@id int OUTPUT) AS
insert into Students([Name],[Age]) values (@name,@age)
select @id=@@IDENTITY –測試輸出參數
return 30 –測試返回30
GO
try {
pstmt = con.prepareCall("{?=call sp_insertStudent(?,?,?)}");
pstmt.setString(2, "zengqingsong");
pstmt.setInt(3, 22);
pstmt.registerOutParameter(4, Types.INTEGER);
pstmt.registerOutParameter(1, Types.INTEGER);
int ret = pstmt.executeUpdate(); //執行影響的行數
int ret2 = pstmt.getInt(1); //返回參數(輸出參數)
int id = pstmt.getInt(4); //輸出參數
System.out.println(ret);
System.out.println(ret2);
System.out.println(id);
❽ 常用的資料庫有哪些
雖然是cop的,但是是專業的。
1. IBM 的DB2
作為關系資料庫領域的開拓者和領航人,IBM在1997年完成了System R系統的原型,1980年開始提供集成的資料庫伺服器—— System/38,隨後是SQL/DSforVSE和VM,其初始版本與SystemR研究原型密切相關。DB2 forMVSV1 在1983年推出。該版本的目標是提供這一新方案所承諾的簡單性,數據不相關性和用戶生產率。1988年DB2 for MVS 提供了強大的在線事務處理(OLTP)支持,1989 年和1993 年分別以遠程工作單元和分布式工作單元實現了分布式資料庫支持。最近推出的DB2 Universal Database 6.1則是通用資料庫的典範,是第一個具備網上功能的多媒體關系資料庫管理系統,支持包括Linux在內的一系列平台。
2. Oracle
Oracle 前身叫SDL,由Larry Ellison 和另兩個編程人員在1977創辦,他們開發了自己的拳頭產品,在市場上大量銷售,1979 年,Oracle公司引入了第一個商用SQL 關系資料庫管理系統。Oracle公司是最早開發關系資料庫的廠商之一,其產品支持最廣泛的操作系統平台。目前Oracle關系資料庫產品的市場佔有率名列前茅。
3. Informix
Informix在1980年成立,目的是為Unix等開放操作系統提供專業的關系型資料庫產品。公司的名稱Informix便是取自Information 和Unix的結合。Informix第一個真正支持SQL語言的關系資料庫產品是Informix SE(StandardEngine)。InformixSE是在當時的微機Unix環境下主要的資料庫產品。它也是第一個被移植到Linux上的商業資料庫產品。
4. Sybase
Sybase公司成立於1984年,公司名稱「Sybase」取自「system」和 「database」 相結合的含義。Sybase公司的創始人之一Bob Epstein 是Ingres 大學版(與System/R同時期的關系資料庫模型產品)的主要設計人員。公司的第一個關系資料庫產品是1987年5月推出的Sybase SQLServer1.0。Sybase首先提出Client/Server 資料庫體系結構的思想,並率先在Sybase SQLServer 中實現。
5. SQL Server
1987 年,微軟和 IBM合作開發完成OS/2,IBM 在其銷售的OS/2 ExtendedEdition 系統中綁定了OS/2Database Manager,而微軟產品線中尚缺少資料庫產品。為此,微軟將目光投向Sybase,同Sybase 簽訂了合作協議,使用Sybase的技術開發基於OS/2平台的關系型資料庫。1989年,微軟發布了SQL Server 1.0 版。
6. PostgreSQL
PostgreSQL 是一種特性非常齊全的自由軟體的對象——關系性資料庫管理系統(ORDBMS),它的很多特性是當今許多商業資料庫的前身。PostgreSQL最早開始於BSD的Ingres項目。PostgreSQL 的特性覆蓋了SQL-2/SQL-92和SQL-3。首先,它包括了可以說是目前世界上最豐富的數據類型的支持;其次,目前PostgreSQL 是唯一支持事務、子查詢、多版本並行控制系統、數據完整性檢查等特性的唯一的一種自由軟體的資料庫管理系統.
7.mySQL
mySQL是一個小型關系型資料庫管理系統,開發者為瑞典MySQL AB公司。在2008年1月16號被Sun公司收購。目前MySQL被廣泛地應用在Internet上的中小型網站中。由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站資料庫。MySQL的官方網站的網址是: www.mysql.com
❾ 資料庫有哪些
回答:
SQL:是一種特殊目的的編程語言,是一種資料庫查詢和 程序設計語言,用於存取數據以及查詢、更新和管理 關系資料庫系統。現在很多電腦愛好者都喜歡用這類數據。
Sybase:是美國Sybase公司研製的一種關系型資料庫系統,是一種典型的UNIX或WindowsNT平台上客戶機/伺服器環境下的大型資料庫系統。Sybase提供了一套應用程序編程介面,可以與非Sybase數據源及伺服器集成,允許在多個資料庫之間復制數據,適於創建多層應用。
DB2:DB2是IBM出品的一系列關系型資料庫管理系統,分別在不同的操作系統平台上服務。
ACCESS:是由微軟發布的關聯式資料庫管理系統。它結合了 Microsoft Jet Database Engine 和圖形用戶界面兩項特點,是 Microsoft Office的成員之一。
Oracle:甲骨文股份有限公司(Oracle)是全球大型資料庫軟體公司,總部位於美國加州紅木城的紅木岸。在2008年,甲骨文股份有限公司是繼Microsoft及IBM後,全球收入第三多的軟體公司。