Mysql知識概述
1:JDBC簡述
JDBC:JAVA Database connectivity java資料庫連線
資料庫有哪些:MySql Oracle SqlServer
平常java連線資料庫是通過資料庫各自提供的jar包來進行訪問,後來sun公司做了一個規範JDBC來連線各種資料庫。
使用JDBC步驟:
package li; import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class MainTest { public static void main(String[] args) { // TODO Auto-generated method stub Connection conn=null; Statement st=null; ResultSet rs=null; try { //1.註冊驅動 DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //2.建立連線 引數一:協議+訪問的資料庫 conn= DriverManager.getConnection("jdbc:mysql://localhost/student", "root", "123456"); //3.建立Statement物件,與資料庫打交道 st=conn.createStatement(); //4.執行查詢 String sql="select * from t_stu"; rs=st.executeQuery(sql); //5.遍歷 while(rs.next()) { int id=rs.getInt("id"); String name=rs.getString("name"); int age=rs.getInt("age"); System.out.println("id="+id+"name="+name+"age="+age); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { JDBCUtil.release(conn, st, rs);; } } }
package li; //釋放資源 import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class JDBCUtil { public static void release(Connection conn,Statement st,ResultSet rs) { closeb(conn); closec(rs); closea(st); } private static void closea(Statement st) { try { if(st!=null) { st.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { st=null; } } private static void closeb(Connection conn) { try { if(conn!=null) { conn.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { conn=null; } } private static void closec(ResultSet rs) { try { if(rs !=null) { rs.close(); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { rs=null; } } }
預防驅動二次註冊:Class.forname("com.mysql.jdbc.Driver");
使用properties配置檔案
1.在src宣告一個檔案 xx.properties,裡面內容如下:
url=jdbc:mysql://localhost/student
root=root
password=123456
driver=com.mysql.jdbc.Driver
2.在工具類裡面,使用靜態程式碼塊,讀取屬性
try { Class.forName(driverClass); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } // DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //2.建立連線 引數一:協議+訪問的資料庫 try { con=DriverManager.getConnection(url, root, password); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { return con; }
資料庫增刪改查:增 insert into t_stu(name,age) values('wangqiang',28)
刪 delete from t_stu where id=5
改 update t_stu set age=13 where id=3
查 select * from t_stu
測試程式碼:
1.定義一個類。Testxxx,裡面定義方法 testXXX
2.新增junit的支援
在工程上點選右鍵---add Library---Junit---Junnit4(預設就好)
3.在方法上面加上註解,其實就是一個標記
4.在將要測試的方法名上點選右鍵,執行單元測試
程式碼如下(查詢):
package li;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.jupiter.api.Test;
public class TestThree {
@Test
public void testQuery() {
Connection conn=null;
Statement st=null;
ResultSet rs=null;
conn= JDBCUtil.getCon();
try {
//2.根據連線物件,得到statement
st = conn.createStatement();
//3.執行sql語句,返回ResultSet0
String sq="select * from t_stu";
rs = st.executeQuery(sq);
//4.遍歷
while(rs.next()) {
String name=rs.getString("name");
int age= rs.getInt("age");
System.out.println(name+" "+age);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
JDBCUtil.release(conn, st, rs);
}
}
}
如果是增刪改
程式碼如下:
這是增的示例,如果要寫改查的,改一下sql語句即可
@Test
public void testinsert() {
Connection conn=null;
Statement st=null;
conn= JDBCUtil.getCon();
try {
//2.根據連線物件,得到statement
st = conn.createStatement();
//3.執行sql語句,返回ResultSet0
String sq="insert into t_stu values(null,'bihao',50)";//sql語句在這
int result= st.executeUpdate(sq);
//4.遍歷
if(result>0) {
System.out.println("新增成功");
}else {
System.out.println("新增失敗");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
JDBCUtil.release(conn, st);
}
}
JDBC Dao模式:
1新建一個dao介面,裡面宣告資料庫訪問規則
package com.dao;
public interface UserDao {
void findAll();
}
2.新建一個dao的實現類,具體實現早前定義的規則
package com.dao.impl;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import com.dao.UserDao;
import com.util.JDBCUtil;
public class UserDaoImpl implements UserDao{
@Override
public void findAll() {
ResultSet rs=null;
Statement st=null;
// TODO Auto-generated method stub
Connection conn=null;
try {
conn=JDBCUtil.getCon();
st = conn.createStatement();
String sql = "select * from t_stu";
rs = st.executeQuery(sql);
while(rs.next()) {
String name=rs.getString("name");
int age=rs.getInt("age");
System.out.println(name+" "+age);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
JDBCUtil.release(conn,st,rs);
}
}
}
3.直接實現
package com.test;
import org.junit.Test;
import com.dao.UserDao;
import com.dao.impl.UserDaoImpl;
public class UserTest {
@Test
public void testFindAll(){
UserDao dao=new UserDaoImpl();
dao.findAll();
}
}