1. 程式人生 > 資料庫 >JAVA JDBC 連線SQL server 2005(2008)資料庫,並進行動態的增刪改查

JAVA JDBC 連線SQL server 2005(2008)資料庫,並進行動態的增刪改查

JAVA JDBC 連線SQL server 2005(2008)資料庫,並進行動態的增刪改查

步驟一:

(1)開啟SQL Server 2005,右擊最上面的伺服器,選擇屬性—>安全性,在右邊框中選擇SQL Server和Windows身份驗證模式,如下圖,最後點確定。
在這裡插入圖片描述
(2)選擇“安全性”中的登入名中的sa,右擊選擇“屬性”,選擇“常規”,在右邊輸入登入名sa,輸入密碼與確認密碼(自己設),再在左邊選擇->狀態,在登入中設“啟用”如圖:
在這裡插入圖片描述
(3)再從->開始->所有程式->Microsoft SQL Server 2005->配置工具->SQL Server Configuration Manager開啟,點選SQL Server 2005服務,開啟如圖:然後將圖中正在執行的服務點選右鍵,重新啟動。

在這裡插入圖片描述
(4)再次登入SQL server 2005,在身份驗證欄選SQL server身份驗證,登入名寫“sa”,密碼寫你設定的,這樣就完成以SQL server身份驗證登入。如圖:
在這裡插入圖片描述

步驟二

保證SQL Server 2005是採用SQL Server身份驗證方式下開始配置

(1)安裝好SQL Server 2005後,執行 開始 → 所有程式 → Microsoft SQL Server 2005 → 配置工具 → SQL Server Configuration Manager,在開啟的視窗的左邊找到 MSSQLSERVER的協議,在右邊右單擊 TCP/IP,選擇 已啟用。如果Named Pipes 未啟用也設為啟用。如圖所示:

在這裡插入圖片描述
(2)雙擊上圖中右邊的 TCP/IP,在彈出的視窗中選擇 IP地址 標籤,把 IPAll (在最下面)中的 TCP埠 設成 1433,並將上方所有的 已啟用 選項設定成“是”。如圖所示:
在這裡插入圖片描述
(3)執行 開始 → 所有程式 → Microsoft SQL Server 2005 → 配置工具 → SQL Server 外圍應用配置器,在開啟的視窗中選擇“服務和連線的外圍應用配置器”,在開啟的視窗左邊選擇 遠端連線,在右邊選擇 同時使用TCP/IP和named pipes(B),然後點選應用。如圖所示:
在這裡插入圖片描述
(4)然後重啟電腦,重啟完畢後,接下來使用命令測試1433埠是否開啟。先開啟控制面板->程式->開啟或關閉windows功能,然後選中telnet客戶端,然後單擊確定,開啟telnet指令。如圖:
在這裡插入圖片描述
然後依次點選-開始選單 → 執行cmd → 在命令提示符下輸入:telnet 127.0.0.1 1433,(注意telnet與127之間有空格,1與1433之間有空格)若提示“不能開啟到主機的連線,在埠 1433: 連線失敗”,則說明1433埠沒有開啟,需要重新進行以上配置。若連線成功,顯示如圖所示:(就只有一個跳動的指標
在這裡插入圖片描述

步驟三:

環境變數CLASSPATH配置
(1)下載JDBC的驅動檔案(在微軟官網就可以下載),放到一個自己知道路徑的資料夾下。(如下圖,我就放在這個裡面
在這裡插入圖片描述
在桌面上右擊 我的電腦,依次選擇 屬性 → 高階 → 環境變數,在 系統變數中雙擊 CLASSPATH變數,追加你儲存JDBC驅動器的位置,若不存在應當新建CLASSPATH變數,並且還是要追加其地址,連續點選確定 以退出環境變數配置。如下圖:(例子
在這裡插入圖片描述

步驟四:

(1)開啟SQL Server 2005,在其中新建資料庫,或者匯入之前自己的SQL server 資料庫如jingzi,然後退出SQL Server 2005。
(2)執行Eclipse,新建一個Java Project名(自己定)。
(3)右單擊工程名,點選構建路徑(最下邊那個properties就是)->配置構建路徑(Java build path),如圖:
在這裡插入圖片描述
然後選擇“庫”(libraries),在右邊視窗點選“新增外部Jar”(add external JARs),找到 你所下載的驅動檔案並開啟,如圖:
在這裡插入圖片描述
(4)在你建立的Java project中新建包(jingzi),在包(*jingzi)*中新建一個類(jdbc),(括號裡面隨便自己命名)在其中輸入程式碼,如下:
(5)最後點選執行,如果出現如圖,則連線成功。
package jingzi; (包的名字必須與你前面命名一致)
import java.sql.Connection; 本地資料庫聯結器
import java.sql.DriverManager; 本地驅動載入管理器
import java.sql.ResultSet; 獲取和更新查詢的結果,結果集
import java.sql.Statement; 介面,提供了執行語句和獲取結果的基本方法
import java.sql.PreparedStatement; 使語句"準備好"
public class JDBC {
首先定義一個class ,在class中靜態定義一個main()函式,在該函式中輸出引數args。
public static void main(String[] args) {
ResultSet rs=null; 定義出這個ResultSet的物件rs返回的符合條件的所有物件的集合
Connection conn=null; 宣告資料庫連線物件
String driverName=“com.microsoft.sqlserver.jdbc.SQLServerDriver”; SQL驅動程式類
String dbURL=“jdbc:sqlserver://localhost:1433;DatabaseName=jingzi”; 指定資料庫
String userName=“sa”; 預設使用者名稱
String userPwd="(1721330046)"; 預設密碼
try
{
Class.forName(driverName); 載入SQL SERVER 的JDBC驅動程式
System.out.println(“載入驅動成功!”);
}
catch(Exception e){
e.printStackTrace(); 在命令列列印異常資訊在程式中出錯的位置及原因
System.out.println(“載入驅動失敗!”);
}
try{
Connection dbConn=DriverManager.getConnection(dbURL,userName,“1721330046”);
//建立JDBC驅動程式到指定資料庫url的連線,dburl提供一種表示資料庫的方法,userName為使用者名稱,userPwd為使用者密碼。DriverManager類的getConnection()是實現建立JDBC驅動程式到資料庫連線的方法,返回一個connection物件。
System.out.println(“連線資料庫成功!”);
Statement stmt =dbConn.createStatement(); 連線資料庫時,要獲取一個可以執行sql語句的物件
//Statement 用於執行靜態 SQL 語句並返回它所生成結果的物件。
//createStatement()建立一個 Statement 物件來將 SQL 語句傳送到資料庫。
//建立了到特定資料庫的連線之後,就可用該連線傳送 SQL 語句。Statement 物件用 Connection 的方法createStatement 建立
rs = stmt.executeQuery(“select sno,sname,sex from 學生表 where dno=‘計算機學院’”);
//用來查詢資料庫資訊,為了執行 Statement 物件,被髮送到資料庫的 SQL 語句將被作為引數提供給 Statement,方法 executeQuery 用於產生單個結果集的語句
插入
PreparedStatement ps =dbConn.prepareStatement(“insert into sc(sno,cno,score)”+“values(?,?,?)”); //建立prepareStatement物件,SQL語句已傳送給資料庫,並編譯好為執行作好準備;在執行 PreparedStatement 物件之前,必須設定每個 ? 引數的值。這可通過呼叫 setXXX 方法來完成,其中 XXX 是與該引數相應的型別。
ps.setInt(1,10089);
ps.setInt(2,36);
ps.setInt(3,100); //代表設定給第3個?號位置的值為Int型別的100,初始化資料
ps.executeUpdate();
更新
//PreparedStatement ps1 =dbConn.prepareStatement(“update 學生表 set native=? where policy=?” );
//ps1.setString(1,“西藏自治區”);
//ps1.setString(2,“團員”);
//ps1.executeUpdate();
刪除
//PreparedStatement ps2 =dbConn.prepareStatement(“delete from 選課成績表 where score<?” );
//ps2.setString(1,“60”);
//ps2.executeUpdate();
//while(rs.next()){ //將rs全部進行讀取,如果物件中有資料,就會迴圈打印出來
//rs.next(); 是遊標向下移動一行的意思,放在while迴圈裡面做迴圈條件,如果有下一行,執行了遊標的向下移動。
//System.out.println(rs.getInt(“sno”)+","+rs.getString(“sname”)+","+rs.getString(“sex”));
}
}
catch(Exception e)
{
e.printStackTrace();
System.out.print(“SQL Server連線失敗!”);
}
}
}

理解程式碼之try-catch:

如果沒有try的話,出現異常會導致程式崩潰,用try的話,則可以讓程式執行下去
try {
//執行的程式碼,其中可能有異常。一旦發現異常,則立即跳到catch執行。否則不會執行catch裡面的內容
}
catch (Exception e){
//除非try裡面執行程式碼發生了異常,否則這裡的程式碼不會執行,當try語句中出現異常時,會執行catch中的語句,java執行時系統會自動將catch括號中的Exception e 初始化,也就是例項化Exception型別的物件。e是此物件引用名稱。然後e(引用)會自動呼叫Exception類中指定的方法。
}
finally
{
//不管什麼情況都會執行,包括try catch 裡面用了return,可以理解為只要執行了try或者catch,就一定會執行 finally
}

程式碼解釋:

這個是原始程式碼:
Connection dbConn=DriverManager.getConnection(dbURL," userPwd ");
這個是修改後的程式碼:
Connection dbConn=DriverManager.getConnection(dbURL,“1721330046”);
把密碼的值寫死進去就能直接執行,(可能有些人可以不寫死也能執行程式碼,可嘗試),這是因為系統在properties裡面讀各種數值的時候,讀出來的結果是這樣子的:userName=sa;userPwd=sa,就是讀不出來密碼1721330046的值,要想不寫死程式碼,可以去找到該工程所在目錄,找到 properties 檔案,用記事本開啟,修改 password=123456,重新整理工程,重啟 Tomcat即可。