1. 程式人生 > 資料庫 >JAVA 連線SQLServer資料庫

JAVA 連線SQLServer資料庫

哇今天閒著沒事準備把前幾天連結資料庫碰到的問題寫到部落格,寫到一半瀏覽器切出去了,這個瀏覽器也沒儲存,晚上又寫了一遍,唉 蛋疼呀╮(╯▽╰)╭!!

說一說連線資料庫遇到的問題,唉問題繁多,原來自己刷的精簡版盜版系統剛開始就打不開資料庫安裝包,後來刷了個原版的,連結不上去,後來就又刷了一遍系統(刪登錄檔也裝不上去),一些問題你們需要參考一下... 這個對framework 3.5需求很高,沒裝的,或者有問題的都裝不上。。有時候我特麼裝了VS2013就裝不了資料庫,裝了資料庫就裝不了VS

!!!呀呀呀

安裝問題:

  安裝時到這一步儘量選混合模式自己輸入密碼,不用太複雜123456就得了,畢竟你是在學習,不是維護資料庫.   如果 安裝時是這樣安裝的只需要進行下面的步驟:
如果不是這樣的  看紅色標記後的內容... 開啟sql配置工具如圖: 把TCP/ip協議開啟   就是後面的狀態列是已啟用。她要求重啟服務   可以點選第一個sql server服務重啟啟動那些正在執行的服務,----------我覺得你應該明白。。實在不行你也可以重啟電腦呀哈哈!!! 第二個是埠問題  建議使用原來預設埠,因為不用改呀!!省的麻煩!一般那個埠不會被佔用的,如果要改的話把TCP/ip的所有Ip改成一樣的埠:不明白看下圖:     下面是驅動問題:下載驅動包!    Microsoft SQL Server JDBC Driver 3.0.zip 這是Microsoft SQL Server JDBC Driver驅動你也可以去官網下載,畢竟與時俱進可能更新了功能, 開啟eclipse或者ME建立JAVA專案 點選你建立的java專案-右鍵-構建路徑-新增外部歸檔(上面有個小奶瓶圖示)把你下載的驅動解壓,新增sqljdbc4.jar這個jar包:如圖
之後你建一個類複製下面的程式碼執行就可以 複製程式碼
//shijiazhuangtiedaodaxue
import java.sql.*;

public class Conn
{
    public static void main(String[] args) throws Exception
    {
        //Class.forName("com.mysql.jdbc.Driver");
        
        //一開始必須填一個已經存在的資料庫
        String url = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=model;";   
        Connection conn = DriverManager.getConnection(url, "sa", "123456");// 連線資料庫
        Statement stat = conn.createStatement();//建立一個 Statement 物件來將 SQL 語句傳送到資料庫。
        ResultSet resultSet=stat.executeQuery("select * From master.dbo.sysdatabases where name='hello'");
        if (resultSet.next()) {  
            System.out.println("table exist!");  
            //查詢資料
            stat.close();//關閉原來的物件
            conn.close();//關閉原來的連結
            url = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=hello;";
            conn = DriverManager.getConnection(url, "sa", "123456");// 連線資料庫如果你的密碼不是123456是要改的預設sa使用者不用改的
            stat = conn.createStatement();//建立一個 Statement 物件來將 SQL 語句傳送到資料庫。
            
            ResultSet result = stat.executeQuery("select * from SQLtest");
            while (result.next())
            {
                System.out.println("學號 "+result.getInt("id") + " 名字 " + result.getString("name")+" 年齡 "+result.getInt("Age"));
            }
            
            //關閉資料庫
            result.close();
            stat.close();
            conn.close();
            
            
            
        }else{  
            //建立資料庫hello
            stat.executeUpdate("create database hello"); 
            //開啟建立的資料庫
            stat.close();
            conn.close();
            url = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=hello;";
            conn = DriverManager.getConnection(url, "sa", "123456");// 連線資料庫
            stat = conn.createStatement();//建立一個 Statement 物件來將 SQL 語句傳送到資料庫。
            //建立表SQLtest
            stat.executeUpdate("create table SQLtest(id int, name varchar(80),Age int)");
            
            //新增資料
            stat.executeUpdate("insert into SQLtest values(20163678, '胡粑粑',18)");
            stat.executeUpdate("insert into SQLtest values(20163679, '李麻麻',19)");
            stat.executeUpdate("insert into SQLtest values(20163620, '習噠噠',20)");
         System.out.println("create table success!");  
         ResultSet result = stat.executeQuery("select * from SQLtest");
            while (result.next())
            {
                System.out.println("學號 "+result.getInt("id") + " 名字 " + result.getString("name")+" 年齡 "+result.getInt("Age"));
            }
            
            //關閉資料庫
            result.close();
            stat.close();
            conn.close();
        }  
        
        
    }
    
    
    
}
複製程式碼

裡面會為你建一個數據庫和表,並讀出裡面的內容,如果表存在則直接讀出裡面的內容,自己寫的程式碼,還是新手,程式碼沒那麼精簡。。。勿噴

如果你安裝時沒有建立密碼需要建立密碼

如圖:

點安全性-登入名-開啟登陸屬性-按照圖中的操作改成你需要的密碼.....

檢視你的登陸屬性第四個選項---   狀態是不是啟用和授予--如果不是改成啟用和授予。

然後重新開啟SQL Server Management Studio 使用SQL server身份驗證登陸 賬戶為sa 密碼是你自己設的如果登陸成功,證明你密碼修改成功

 

 

1準備JDBC驅動

選擇sqljdbc_7.2.2.0_chs.exe下載
接下來開啟,設定路徑,點選"unzip",解壓到任意目錄。
解壓出的資料夾中有很多檔案,但我們只需要三個“mssql-jdbc-7.2.2.jre8.jar”,“mssql-jdbc-7.2.2.jre11.jar”,“sqljdbc_auth.dll”(dll有兩種,64位系統使用x64資料夾下的,32位用x86下的)
將“mssql-jdbc-7.2.2.jre8.jar”,“mssql-jdbc-7.2.2.jre11.jar”移動到java工程的lib資料夾下,之後在工程中匯入對應java版本的jar
將“sqljdbc_auth.dll”移動到java安裝目錄\JDK\bin下

2資料庫設定
開啟Sql Server配置管理器

網路配置->MSSQLSERVER->TCP/IP,啟動TCP/IP
接下來右鍵TCP/IP->屬性->IP地址,將IP0,IP10,IPALL改為如下圖屬性

應用設定後,重啟SQL伺服器,如下圖

重啟資料庫後要檢查1433埠是否開啟
在cmd裡輸入netstat -an|findstr 1433

輸出為下圖時表示1433埠開啟

2.java程式碼

程式碼中的IPv4地址可以在cmd中用ipconfig得到

Copy
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

class JDBCTest {
    public static void main(String[] args) {
        String connectionUrl =
                "jdbc:sqlserver://(你的IPv4IP):1433;databaseName=選擇的資料庫;integratedSecurity=false;";

        try (Connection con = DriverManager.getConnection(connectionUrl, "資料庫使用者名稱", "密碼");
             Statement stmt = con.createStatement();) {
            String SQL = "SELECT TOP 10 * FROM uDept;(這裡為輸入的SQL語句)";
            ResultSet rs = stmt.executeQuery(SQL);
            while (rs.next()) {
                System.out.println(rs.getString("表中的列名"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

 

 

 

 

package connect;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class SqlServerTest {
	public static void main(String[] args) {
		try {
	        //一開始必須填一個已經存在的資料庫
	        String url = "jdbc:sqlserver://xxxxxip:1433;DatabaseName=xxxxx;";   
	        Connection conn = DriverManager.getConnection(url, "sa", "xxxx");// 連線資料庫
	        Statement stat = conn.createStatement();//建立一個 Statement 物件來將 SQL 語句傳送到資料庫。
	        ResultSet resultSet=stat.executeQuery("select * From ZKECO.dbo.ipos_meal");
	        ResultSetMetaData md = resultSet.getMetaData();
	        List list = new ArrayList();
	        int columnCount = md.getColumnCount();
	        while (resultSet.next()) {
	            Map rowData = new HashMap();

	            for (int i = 1; i <= columnCount; i++) {
	                rowData.put(md.getColumnName(i), resultSet.getObject(i));

	            }

	            list.add(rowData);
	        }
	        System.out.println("list====="+list);
	        //關閉資料庫
        	resultSet.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
 
	}

}