2013-04-02 54 views
2

我想連接JAVA到SQL SERVER,但我不知道該怎麼做,上個學期我們做了一個使用MS ACCESS的程序,因爲它是數據庫,我想知道如果我也可以使用它來將我創建的程序連接到SQL SERVER。將JAVA應用程序連接到SQL SERVER

這裏是我在Java.Main使用的代碼:

package pkg3a3pgroupsix; 

import java.sql.*; 
import javax.swing.*; 
public class Main { 

Connection conn = null; 
ResultSet rs = null; 
PreparedStatement pst = null; 
Statement s; 

    public static Connection ConnectDatabase(){ 

    try{ 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     Connection conn = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ=BillingSystem.mdb"); 

     return conn; 
    }catch(Exception e){ 
     JOptionPane.showMessageDialog(null, e); 
     return null; 

    } 
} 

    public static void main(String[] args) { 
     try { 
      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
       if ("Windows".equals(info.getName())) { 
        javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
        break; 
       } 
      } 
     } catch (ClassNotFoundException ex) { 
      java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (InstantiationException ex) { 
      java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (IllegalAccessException ex) { 
      java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
      java.util.logging.Logger.getLogger(Login.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } 
     // TODO code application logic here 
    } 
} 

這裏是我用來做就可以了登錄代碼:

package pkg3a3pgroupsix; 

import java.awt.*; 
import java.nio.channels.SeekableByteChannel; 
import javax.swing.*; 
import java.sql.*; 
public class Login extends javax.swing.JFrame { 
Connection conn; 
ResultSet rs = null; 
PreparedStatement pst = null; 
int counter = 0; 

public void registration(){ 
    User_Registration ur = new User_Registration(); 
    ur.setVisible(true); 
    ur.setExtendedState(MAXIMIZED_BOTH); 
    this.dispose(); 
} 
public void exit(){ 
    int selectedOption = JOptionPane.showConfirmDialog(null, 
            "Do you wanna close the window?", 
            "Exit", 
            JOptionPane.YES_NO_OPTION); 
     if (selectedOption == JOptionPane.YES_OPTION) { this.dispose();} 
} 

    public Login() { 
     initComponents(); 
    }      

    private void btnloginActionPerformed(java.awt.event.ActionEvent evt) {           
      // TODO add your handling code here: 
     String sqllogin = "select * from Employee where Username='" + jTextField1.getText() + "' and Password='" + jPasswordField1.getText() + "'"; 
     try { 
      pst = conn.prepareStatement(sqllogin); 
      rs = pst.executeQuery(); 
      if (rs.next()) { 
      SelectionScreen s = new SelectionScreen(); 
      s.setVisible(true); 
      this.dispose();counter = 0;} 
      else {JOptionPane.showMessageDialog(null, "Invalid Username or Password!");counter += 1; 
      if (counter == 1) {JOptionPane.showMessageDialog(null, "WARNING! 1st Attempt of Log-In!");} 
      else if (counter == 2) {JOptionPane.showMessageDialog(null, "WARNING! 2nd Attempt of Log-In!");}} 
      if (counter == 3) {JOptionPane.showMessageDialog(null, "WARNING! 3rd Attempt of Log-In!"); 
      {JOptionPane.showMessageDialog(null, "The Program Will Shutdown.");this.dispose();}}} 
     catch (Exception e) {JOptionPane.showMessageDialog(null, e);} 
    }           

    private void formWindowOpened(java.awt.event.WindowEvent evt) {         

     conn = Main.ConnectDatabase(); 
    }         

    private void btnexitActionPerformed(java.awt.event.ActionEvent evt) {           

     exit(); 
    }          

    private void btnAdminActionPerformed(java.awt.event.ActionEvent evt) {           

     String sqllogin = "select * from Login where Username='" + jTextField1.getText() + "' and Password='" + jPasswordField1.getText() + "'"; 
     try { 
      pst = conn.prepareStatement(sqllogin); 
      rs = pst.executeQuery(); 
      if (rs.next()) { 
      User_Registration UR = new User_Registration(); 
      UR.setVisible(true); 
      this.dispose();counter = 0;} 
      else {JOptionPane.showMessageDialog(null, "Invalid Username or Password!");counter += 1; 
      if (counter == 1) {JOptionPane.showMessageDialog(null, "WARNING! 1st Attempt of Log-In!");} 
      else if (counter == 2) {JOptionPane.showMessageDialog(null, "WARNING! 2nd Attempt of Log-In!");}} 
      if (counter == 3) {JOptionPane.showMessageDialog(null, "WARNING! 3rd Attempt of Log-In!"); 
      {JOptionPane.showMessageDialog(null, "The Program Will Shutdown.");this.dispose();}}} 
     catch (Exception e) {JOptionPane.showMessageDialog(null, e);} 
    } 

我可以用這個?

+1

您需要SQL Server的JDBC驅動程序。嘗試查看[this](http://msdn.microsoft.com/zh-cn/sqlserver/aa937724.aspx)初學者甚至[this](http://stackoverflow.com/questions/1310536/how -to-使-Java的工作與-SQL服務器) – MadProgrammer

回答

4

要從Java應用程序連接到MS SQL Server,您需要使用JDBC API。的JDBC API提供了連接到數據庫的類和方法,加載適當的驅動程序,發送SQL查詢,檢索結果等

如何連接到數據庫中: A「Connection」對象表示與數據庫的連接。要建立連接,請使用方法'DriverManager.getConnection'。此方法接受一個包含表示我們嘗試連接的數據庫的URL的字符串。下面是用於建立連接的示例代碼:

private String DATABASE_URL = "jdbc:odbc:embedded_sql_app"; // establish connection to database 
Connection connection = DriverManager.getConnection(DATABASE_URL,"sa","123"); 

有關數據庫URL以及如何創建它可以在這篇文章的末尾提供的資源中找到詳細的討論。

查詢數據庫:JDBC API提供了一種用於將SQL語句發送到數據庫中,並且對應於「Connection」接口方法創建它們的實例三個接口。 1.Statement - 由'Connection.createStatement'方法創建。 'Statement'對象用於發送不帶參數的SQL語句。 2.PreparedStatement - 由'Connection.prepareStatement方法'創建。 'PreparedStatement'對象用於預編譯的SQL語句。這些可以將一個或多個參數作爲輸入參數(參數爲IN)。 3.CallableStatement - 由'Connection.prepareCall'創建的方法。 'CallableStatement'對象用於從Java數據庫應用程序執行SQL存儲過程。

檢索結果:'ResultSet是一個Java對象,它包含執行SQL查詢的結果。存儲在'ResultSet'對象中的數據通過一組get方法獲取,該方法允許訪問當前行的各個列。 'ResultSet.next'方法用於移動到'ResultSet'的下一行,使其成爲當前行。下面的代碼片斷執行的查詢返回的行的集合,其中列「a」作爲「int」,列「b」作爲「String」和列「c」作爲「float」:

java.sql.Statement stmt = con.createStatement(); 
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1"); 
while (rs.next()) { // retrieve and print the values for the current row 
    int i = rs.getInt("a"); 
    String s = rs.getString("b"); 
    float f = rs.getFloat("c"); 
    System.out.println("ROW = " + i + " " + s + " " + f); 
} 

這只是關於如何與Java數據庫進行交互的簡要介紹。有關上述項目的更多詳細信息以及有關傳遞參數,執行存儲過程等的信息,請參閱以下資源:(http://www.shahriarnk.com/embedding-sql-c-sharp-java-shahriar/#Shahriar_N_Embedding_SQL_in_Java)在這裏,您還可以找到有關如何以編程方式與數據庫進行交互的信息;即不使用SQL。希望您覺得這個有幫助。

來源:www.shahriarnk.com/embedding-sql-c-sharp-java-shahriar/

0

您連接到的每個數據庫(數據庫)都將有不同的連接字符串,並且根據您使用的數據庫不同,您將擁有不同的類。這是您在上面的示例中使用的一個:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
Connection conn = DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ=BillingSystem.mdb"); 

您需要獲取SQL Server和驅動程序的連接字符串。兩者都很容易研究。

如果您使用eclipse,netbeans或大多數IDEs,他們將會有一個服務器資源管理器窗口,您可以添加一個連接,並且可以讓您輕鬆訪問連接字符串。

相關問題