通过JDBK操作数据库
一、配置程序——讓我們程序能找到數(shù)據(jù)庫的驅(qū)動jar包
1.把.jar文件復(fù)制到項目中去,整合的時候方便。
2.在eclipse項目右擊“構(gòu)建路徑”--“配置構(gòu)建路徑”--“庫”--“添加外部jar”--找到數(shù)據(jù)庫的驅(qū)動jar包--點擊確定。會在左側(cè)包資源管理器中出現(xiàn)“引用的庫”,在里面就能找到我們剛才導(dǎo)入的jar包。
二、與數(shù)據(jù)庫建立連接
1.加載數(shù)據(jù)訪問驅(qū)動
2.連接到數(shù)據(jù)庫
建立與MySQL數(shù)據(jù)庫的連接:
Class.forName("com.mysql.jdbc.Driver");//加載數(shù)據(jù)庫驅(qū)動
Connection conn = DriverManager.getConnectio ("jdbc:mysql://127.0.0.1:3306/mydb","賬號","密碼");
Statement state = conn.createStatement();//建立數(shù)據(jù)庫連接,獲得連接對象conn;
建立與SQL Server數(shù)據(jù)庫的連接
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加載數(shù)據(jù)庫驅(qū)動
Connection conn = DriverManager.getConnectio ("jdbc:sqlsever://127.0.0.1:1433/DatabaseName=mydb","賬號","密碼");//建立數(shù)據(jù)庫連接,獲得連接對象conn;
其中mydb是表名。
三、查詢、插入、修改、刪除數(shù)據(jù)庫中的數(shù)據(jù)
建立表login
1.查詢數(shù)據(jù)
1.1使用Statement接口制作一個登錄驗證
賬號密碼輸入正確時:輸入 zhangsan ?zhangsan 出現(xiàn) “恭喜您張三登錄成功”
賬號密碼輸入錯誤時:輸入 zhangsan ?lisi ? ?出現(xiàn)“您輸入的賬號密碼有誤”
但是上述方法會有“注入”問題出現(xiàn),如輸入 ? asdf' or 1=1 #會出現(xiàn)登錄成功。輸入中的單引號會和前面的單引號形成配對,而#會注釋掉后面的語句,1=1隨時成立,就會出現(xiàn)登錄成功。
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 出現(xiàn) “恭喜您張三登錄成功”
賬號密碼輸入錯誤時:輸入 zhangsan ?lisi ? ?出現(xiàn)“您輸入的賬號密碼有誤”
此種方式不會出現(xiàn)“注入” 問題。
2.向數(shù)據(jù)庫中插入數(shù)據(jù)
2.1使用Statement接口插入數(shù)據(jù)
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);//插入 刪除 更新數(shù)據(jù)時用updateconn.close();
}
運行結(jié)果:
2.2使用PreparedStatement接口插入數(shù)據(jù)
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(); }運行結(jié)果:
轉(zhuǎn)載于:https://www.cnblogs.com/ermeng/p/6249978.html
總結(jié)
以上是生活随笔為你收集整理的通过JDBK操作数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到捉龙虾是什么意思周公解梦
- 下一篇: ORM SQLAlchemy 简介