1. 程式人生 > >Mysql知識概述

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();
			}
}