摘要:本文主要介紹采用JDBC、ODBC接口實現了與SQL Server2000數據庫的連接,並利用Java應用程序對其進行訪問,同時通過圖形用戶界面實現了簡單的查詢功能。
關鍵詞:Java,SQL Server,數據庫
前言
數據庫技術和網絡技術是當今計算機領域的兩大熱門話題,數據庫技術自產生以來,在技術上已發展成熟。而作為前端訪問的開發工具和環境仍處在不斷完善和發展之中,除了網絡上使用的ASP、PHP、JSP作為前端連接數據庫技術外,小型系統上常用訪問數據庫技術有Delphi、Visual Basic、PowerBuilder及VC++等,而Java也是其中之一。
Java語言是編寫數據庫應用程序的傑出語言之一,它提供了方便訪問數據的技術。利用Java語言中的JDBC技術,用戶能方便地開發出基於Web網頁的數據庫訪問程序,從而擴充網絡應用功能。JDBC(Java Database Connectivity,Java數據庫連接)是一種用於執行SQL語句的Java API,可以為多種關系數據庫提供統一的訪問接口。JDBC由一組用Java語言編寫的類與接口組成,通過調用這些類和接口所提供的方法,用戶能夠以一致的方式連接多種不同的數據庫系統(如Access、SQL Server 2000、Oracle、Sybase等),進而可使用標准的SQL語言來存取數據庫中的數據,而不必再為每一種數據庫系統編寫不同的Java程序代碼。
SQL Server2000是微軟公司新一代的數據庫產品,它是在SQL Server7.0建立的堅固基礎上產生的,並對SQL Server7.0做了大量擴展。SQL Server2000通過高端硬件平台以及最新網絡和存儲技術的支持,可為最大的Web站點和企業級應用提供可擴展性和高可靠性。
Java通過JDBC、ODBC接口訪問數據庫
1 JDBC、ODBC接口
Java應用程序通過JDBC API(java.sql)與數據庫連接,而實際的動作則是由JDBC驅動程序管理器(JDBC Driver Manager)通過JDBC驅動程序與數據庫系統進行連接。ODBC(Open DataBase Connectivity)即開放式的接口,它為用戶提供了一個訪問關系數據庫的標准接口,對於不同的數據庫它提供了一套統一的API;可以使應用程序通過API訪問任何提供了ODBC驅動程序的數據庫,而目前所有的關系數據庫都提供了ODBC驅動程序,所以ODBC已經成為數據庫訪問的業界標准,並得到了廣泛應用。
JDBC-ODBC橋是一種JDBC驅動程序,它通過將JDBC操作轉換為ODBC操作來實現的。利用JDBC-ODBC橋可以使程序開發人員不需要學習更多的知識就可以編寫JDBC應用程序,並能夠充分利用現有的ODBC數據源。JDBC-ODBC橋驅動程序可以使JDBC能夠訪問幾乎所有類型的數據庫。
2 利用Java應用程序訪問SQL Server2000數據庫
(1)建立數據庫
啟動“Microsoft SQL Server2000”,打開“企業管理器”在“數據庫”中建立名為“mydata”的數據庫,並在其下制作名為“wuzi”的數據表,如圖1所示。
圖1
(2)建立(ODBC)數據源和驅動程序
在控制面板上通過“管理工具”的“數據源(ODBC)”打開“ODBC數據源管理器”對話框,單擊“系統DSN”選項卡,然後單擊“添加”按鈕,得到“創建數據源”對話框,選擇“SQL Server”並單擊“完成”按鈕,在出現的“建立新的數據源到SQL Server”對話框中的“數據源名稱”項填寫“wzgl”並選取“服務器名”,然後單擊“下一步”按鈕,選擇“使用網絡登錄ID的Windows NT驗證”項目,單擊“下一步”按鈕,把默認的數據庫改為“mydata”,再單擊“下一步”,單擊“完成”按鈕,然後可以單擊“測試數據源”,成功後,單擊“確定”按鈕,完成了(ODBC)數據源和驅動程序的建立。
3 編寫代碼
將代碼保存在jdbc.java文件中:
import java.awt.*;import java.awt.event.*;import java.sql.*; public class jdbc //定義主類 { public static void main(String args[]) { GUI gui=new GUI(); //創建類GUI的對象 gui.pack(); //裝載執行GUI類 } } class GUI extends Frame implements Action Listener { TextArea text; Panel panel; TextField sno; Button btn; GUI() //構造方法 { super("物資情況查詢");setLayout(new BorderLayout()); setBackground(Color.cyan); setVisible(true);text=new TextArea(); btn=new Button("查詢"); sno=new TextField(16); panel=new Panel(); panel.add(new Label("輸入被查詢的物資編號:")); panel.add(sno); panel.add(btn); add("North",panel); add(text,"Center"); text.setEditable(false);btn.addActionListener(this); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { setVisible(false); System.exit(0); } }); } public void actionPerformed(ActionEvent e) { if(e.getSource()==btn) //當用戶按下查詢按鈕時 { text.setText("查詢結果"+'\n'); //顯示提示信息 try { Liststudent(); } catch(SQLException ee) { } } } public void Liststudent() throws SQLException //針對數據庫的操作 { String bh,mc,xh,lb,dw,sj; int sl; float dj,je; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException e) { } Connection con=DriverManager.getConnection("jdbc:odbc:wzgl"); Statement sql=con.createStatement(); //創建Statement對象 ResultSet rs=sql.executeQuery("select * from wuzi"); while(rs.next()) //輸出被查詢的情況 { bh=rs.getString("物資編號"); mc=rs.getString("物資名稱"); xh=rs.getString("規格型號"); lb=rs.getString("類別"); dw=rs.getString("計量單位"); sl=rs.getInt("數量"); dj=rs.getFloat("單價"); je=rs.getFloat("金額"); sj=rs.getDate("時間").toString(); if(bh.trim().equals(sno.getText().trim())) { text.append('\n'+"物資編號"+" "+"物資名稱"+" "+"規格型號"+" "+"類別"+" "+"計量單位"+" "+"數量"+" "+"單價"+" "+"金額"+" "+"時間"+'\n'); text.append('\n'+bh+" "+mc+" "+xh+" "+lb+" "+dw+" "+sl+" "+dj+" "+je+" "+sj+" "+'\n'); } } } }
4 運行程序
首先編繹:javac jdbc.java
編譯成功後,執行:java jdbc
執行後在文本框中輸入要查詢物資的物資編號,單擊“查詢”按鈕,在下面的文本框中顯示被查詢物資的所有信息。如圖2所示。
圖2
結束語
本文只涉及到對SQL Server2000數據庫訪問的查詢操作,也可以進行插入、刪除、修改等操作。隨著數據庫技術的迅猛發展和Java版本的不斷升級,利用Java對數據庫的訪問會越來越簡單,並且應用的范圍也會越來越廣,當然還會有許多新的功能等待我們去開發。