如何連接數據庫?(JDBC詳解+代碼)

1. JAVA 訪問數據庫的技術:


    Jdbc是一種Java連接數據庫技術(Java database connectity), 它是 Java 提供的一些接口,這些接口大部分是數據庫廠商提供的(jar包),我們要做的,是連接數據庫以後,如何使用Java代碼從數據庫中存取數據!
代碼下面有對每一步 詳細的介紹

public class MyUtils {
    private static final String USER = "root";//連接的用戶名
    private static final String PASSWORD= "123456";//連接的密碼
    private static final String URL = "jdbc:mysql://localhost:3306/canteen";//連接的端口號+數據庫名

    private MyUtils(){}//構造函數聲明成私有的不能被new對象
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");//獲取數據庫驅動
        } catch (ClassNotFoundException e){
            e.printStackTrace();
        }
    }
    public static Connection getConnection(){
        Connection conn = null;//獲取數據庫鏈接
        try {
            conn = DriverManager.getConnection(URL,USER,PASSWORD);//連接的端口號 用戶名 密碼
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
    public static void releaseResource(Connection conn, Statement statement){//關閉數據庫連接
        try {
            statement.close();
            conn.close();
        } catch (SQLException e){
            e.printStackTrace();
        }
    }
//關閉數據庫連接 並關閉從數據庫中獲取的結果集。(resultSet結果集)
 public static void releaseResource(Connection conn, Statement statement, ResultSet res){
        try {
            statement.close();
            conn.close();
            res.close();//關閉結果集
        } catch (SQLException e){
            e.printStackTrace();
        }
    }
}

    //MySQL驅動固定寫法!注意是”MySQL數據庫的驅動”

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

連接數據庫必要的參數:

URL: 訪問數據庫的地址:寫法:
      jdbc:mysql://數據庫所在Ip地址:數據庫端口/數據庫的名字
name : 要連接的數據庫的賬戶名

password : 要連接數據庫的用戶密碼          

//找到本機的數據庫應用,3306是數據庫的默認端口 8080是tomkat的默認端口

String url = "jdbc:mysql://localhost:3306/student";
String name = "root";//將要連接數據庫的賬戶
String password = "root";//將要連接數據庫的密碼
Connection connection = DriverManager.getConnection(url,name,password);

獲得執行sql語句的對象
用於執行SQL語句
PreparedStatement接口繼承了Statement,
Statement(固定),和 PreparedStatement(可變參數) 是SQL語句的兩種執行方式

已知參數用Statement     

未知參數用PreparedStatement(就是你不知道你要獲取的是什麼)

1.在遇到要執行的SQL語句是帶可變參數的時候,就用PreparedStatement對象,應爲PreparedStatement可以用佔位符將SQL語句加入可變參數!:
String sql = "insert into user(sno,name,age)values(?,?,?)";//定義一個要執行的SQL語句
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1,student.getSno());//設置SQL語句的第一個參數
ps.setString(2,student.getName());//設置SQL語句的第二個參數
ps.setInt(3,student.getAge());//設置SQL語句的第三個參數
2.當要執行的SQL語句的是不帶可變參數的時(就是SQL語句不變時!):
  
 String sql = "SELECT * FROM user";
    Statement statement = connection.createStatement();//sql語句的執行對象
    ResultSet row = statement.executeQuery(sql);//執行SQL語句
PreparedStatement 和Statement的區別:
PreparedStatement:用戶通過你係統輸入變量時,變量將加入你的SQL語句,這樣就能在不知道你的用戶輸入的情況下,獲取信息


執行SQL語句

  兩種語句:

  1).不用返回數據庫信息: 增,刪,改

    exexuteUpdate() 方法 : 返回一個整形(對數據庫影響的行數)

    如果int a=0,那麼如果數據庫裏的內容有變動,a=exexuteUpdate 中a=1。

2).需要返回數據庫信息:
  查
    exexuteQuery() 方法 : 返回一個結果集對象(Resultest 在數據庫中查到的一條數據)
    讀取返回對象集中的數據的方法: (就是集合的迭代器)
   Resultest.next()能夠返回給你還有沒有記錄,
   getObjeck方法,讀取一條記錄裏面字段所對應的值


處理執行後的結果

調用Dao的方法後返回一個結果給servlet 讓servlet進行處理!:如:
int row = UserDAD.insert(student);
if (row==1){
    jsonObject.put("code",1);
    jsonObject.put("msg","添加成功");
    jsonObject.put("data",student);
}else {
    jsonObject.put("code",2);
    jsonObject.put("msg","添加失敗");
}

 釋放資源

將用到的傳輸有關的對象再傳輸完成後統統釋放!  如:
ps.close();

connection.close();




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章