Java連接數據庫(JDBC技術)

一、Java連接數據庫步驟

1、導入mysql數據庫驅動程序jar包
Ctrl+c複製mysql-connector-java-5.1.37-bin.jar這個包放到eclipse,放到工程根目錄下,新建New Folder,Folder name:lib,然後Ctrl+V粘貼。右鍵mysql-connector-java-5.1.37,Build Path,Add to Build Path,會看到多了一個Referenced Libraries即成功。

2、註冊驅動:告知JVM使用的是哪一個數據庫的驅動

Class.forName("com.mysql.jdbc.Driver");

3、獲得數據庫連接
DriverManager類中靜態方法:
static Connection getConnection(String url,String user,String password)
url:數據庫地址,格式:jdbc:mysql://連接主機IP:端口號/數據庫名

String url="jdbc:mysql://localhost:3306/mybase";
String username="root";
String password="123";
Connection con =DriverManager.getConnection(url,username,password);

4、獲得語句執行平臺
通過數據庫連接對象,獲得Sql語句的執行者對象
con對象調用方法Statement createStatement()獲取Statement對象,將SQL語句發送到數據庫,返回值是statement接口的實現類對象,在mysql驅動程序

Statement stat=con.createStatement();

5、執行sql語句

int executeUpdate(String sql)執行數據庫中的sql語句,返回值int,表示操作成功數據表多少行

int row=stat.executeUpdaate(INSERT INTO sort(sname,sprice,sdesc) VALUES('汽車用品','500000','漲價'));//sort是數據表的表名
System.out.println(row);//1 標明一行代碼寫進去了

6、釋放資源

一堆close()

stat.close();
con.close();

二、JDBC技術,查詢數據表,獲取結果集

public static void main(String[] args)throws Exception{
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/mybase";
String username="root";
String password="123";
Connection con=DriverManager.getConnection(url,username,password);
Statement stat=con.createStatement();
String sql="SELECT * FROM sort";//拼寫查詢SQL
ResultSet rs=stat.executeQuery(sql);//執行sql語句中的select查詢,返回值ResultSet接口的實現類對象
while(rs.next()){//ResultSet接口方法 boolean next()返回true有結果集
System.out.println(rs.getInt("sid")+"  "+rs.getString("sname")+"  "+rs.getDouble("sprice") );//獲取每列數據,使用ResultSet接口的方法getXXX方法參數,建議寫String列名
rs.close();
stat.close();
con.close();
}
}

SQL的注入攻擊,登陸案例
java程序實現用戶登陸,用戶名和密碼,容易被別人注入攻擊。

三、防止注入攻擊
PreparedStatement:SQL預編譯存儲,多次高效的執行SQL,是Connection數據庫連接對象的方法
PreparedStatement prepareStatement(String sql)

public static void main(String[] args)throws Exception{
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/mybase";
String username="root";
String password="123";
Connection con=DriverManager.getConnection(url,username,password);
Scanner sc=new Scanner(System.in);
String user=sc.nextLine();
String pass=sc.nextLine();
String sql="SELECT * FROM users WHERE username=? AND password=?";//方法中參數,SQL語句中的參數全部採用問號佔位符
PreparedStatement pst=con.prepareStatement(sql);//調用Connection接口的方法prepareStatement,獲取PrepareStatement接口的實現類
pst.setObject(1,user);//調用pst對象的set方法,設置問號佔位符上的參數
pst.setObject(2,pass);
ResultSet rs=pst.executeQuery();//執行sql語句中的select查詢,返回值ResultSet接口的實現類對象
while(rs.next()){//ResultSet接口方法 boolean next()返回true有結果集
System.out.println(rs.getString("username")+"  "+rs.getString("password") );//獲取每列數據,使用ResultSet接口的方法getXXX方法參數,建議寫String列名
rs.close();
pst.close();
con.close();

}

JAVA提供訪問數據庫規範稱爲JDBC

發佈了9 篇原創文章 · 獲贊 2 · 訪問量 1948
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章