通過JDBK操作數據庫


一、配置程序——讓我們程序能找到數據庫的驅動jar包
1.把.jar文件復制到項目中去,整合的時候方便。
2.在eclipse項目右擊“構建路徑”--“配置構建路徑”--“庫”--“添加外部jar”--找到數據庫的驅動jar包--點擊確定。會在左側包資源管理器中出現“引用的庫”,在里面就能找到我們剛才導入的jar包。
二、與數據庫建立連接
1.加載數據訪問驅動
2.連接到數據庫
建立與MySQL數據庫的連接:
Class.forName("com.mysql.jdbc.Driver");//加載數據庫驅動
Connection conn = DriverManager.getConnectio ("jdbc:mysql://127.0.0.1:3306/mydb","賬號","密碼");
Statement state = conn.createStatement();//建立數據庫連接,獲得連接對象conn;
建立與SQL Server數據庫的連接
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加載數據庫驅動
Connection conn = DriverManager.getConnectio ("jdbc:sqlsever://127.0.0.1:1433/DatabaseName=mydb","賬號","密碼");//建立數據庫連接,獲得連接對象conn;
其中mydb是表名。
三、查詢、插入、修改、刪除數據庫中的數據

建立表login

1.查詢數據
1.1使用Statement接口制作一個登錄驗證

package com.itnba.maya.login;
import java.sql.*;
import java.util.*;
public class Test {
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        String zhang = sc.nextLine();
        String pas = sc.nextLine();
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/wang?characterEncoding=GBK", "root", "");//括號里面不能用空格
        Statement state = conn.createStatement();
        String sql = "select * from login where zhanghao='"+zhang+"' and  password = '"+pas+"'";
        ResultSet rs =  state.executeQuery(sql);//獲得一個查詢結果集。
        Boolean ok = rs.next();
        if(ok)
        {
            System.out.println("恭喜您"+rs.getString(3)+"登錄成功");
        }
        else
        {
            System.out.println("您輸入的賬號密碼有誤");
        }
        conn.close();
    }
}

賬號密碼輸入正確時:輸入 zhangsan  zhangsan 出現 “恭喜您張三登錄成功”

賬號密碼輸入錯誤時:輸入 zhangsan  lisi    出現“您輸入的賬號密碼有誤”

但是上述方法會有“注入”問題出現,如輸入   asdf' or 1=1 #會出現登錄成功。輸入中的單引號會和前面的單引號形成配對,而#會注釋掉后面的語句,1=1隨時成立,就會出現登錄成功。

1.2使用PreparedStatement接口制作一個登錄驗證

public class Test {
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        String zhang = sc.nextLine();
        String pas = sc.nextLine();
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/wang?characterEncoding = GBK", "root", "");
        String sql = "select * from login where zhanghao=? and  password =?";
        PreparedStatement state = conn.prepareStatement(sql);
        state.setString(1, zhang);
        state.setString(2,pas);
        ResultSet rs =  state.executeQuery();
        Boolean ok = rs.next();
        if(ok)
        {
            System.out.println("恭喜您"+rs.getString(3)+"登錄成功");
        }
        else
        {
            System.out.println("您輸入的賬號密碼有誤");
        }
        conn.close();
    }

賬號密碼輸入正確時:輸入 zhangsan  zhangsan 出現 “恭喜您張三登錄成功”

賬號密碼輸入錯誤時:輸入 zhangsan  lisi    出現“您輸入的賬號密碼有誤”

此種方式不會出現“注入” 問題。

2.向數據庫中插入數據

2.1使用Statement接口插入數據

public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        String zhang = sc.nextLine();
        String pas = sc.nextLine();
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/wang?characterEncoding = GBK", "root", "");
        Statement state = conn.createStatement();
        String sql = "insert into wang (zhanghao,password,name) values('zhangyu','zhangyu','張宇')";
        state.executeUpdate(sql);//插入 刪除 更新數據時用update
conn.close();
}

運行結果:

2.2使用PreparedStatement接口插入數據

    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn =DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/wang?characterEncoding=GBK", "root", "");
        String sql ="insert into login (zhanghao,password,name) values(?,?,?)";
         PreparedStatement state = conn.prepareStatement(sql); 
        state.setString(1, "zhangyu");
        state.setString(2,"zhangyu");
        state.setString(3,"張宇");
        state.executeUpdate();
         conn.close();
}

運行結果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM