哇今天閑着沒事准備把前幾天鏈接數據庫碰到的問題寫到博客,寫到一半瀏覽器切出去了,這個瀏覽器也沒保存,晚上又寫了一遍,唉 蛋疼呀╮(╯▽╰)╭!!
說一說連接數據庫遇到的問題,唉問題繁多,原來自己刷的精簡版盜版系統剛開始就打不開數據庫安裝包,后來刷了個原版的,鏈接不上去,后來就又刷了一遍系統(刪注冊表也裝不上去),一些問題你們需要參考一下... 這個對framework 3.5需求很高,沒裝的,或者有問題的都裝不上。。有時候我特么裝了VS2013就裝不了數據庫,裝了數據庫就裝不了VS
!!!呀呀呀
安裝問題:




//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改為如下圖屬性
重啟數據庫后要檢查1433端口是否打開
在cmd里輸入netstat -an|findstr 1433
輸出為下圖時表示1433端口開啟
2.java代碼#
代碼中的IPv4地址可以在cmd中用ipconfig得到
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(); } } }