日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java jdbc in list_javaweb_JDBC

發布時間:2025/3/20 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java jdbc in list_javaweb_JDBC 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1:注冊驅動(需拷入相關jar包)

2:獲取連接Connection

3:得到執行sql語句的對象Statement

4:執行sql語句,并返回結果

5:處理結果

6:關閉Connection

代碼示例:

packagemy;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;public classmyjdbc {

public static void main(String[] args) throwsException {//1 注冊驅動

Class.forName("com.mysql.jdbc.Driver");//2 獲取連接Connection(mydatabase:數據庫名稱,root:登錄數據庫用戶名,123456:密碼)

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase","root", "123456");//3 得到執行sql語句的對象Statement

Statement stmt =conn.createStatement();//4 執行sql語句,并返回結果(從表t_user中查找 id,name,password,email,birthday)

ResultSet rs = stmt.executeQuery("select id,name,password,email,birthday from t_user");//5 處理結果

while(rs.next()){

System.out.println(rs.getObject("id"));

System.out.println(rs.getObject("name"));

System.out.println(rs.getObject("password"));

System.out.println(rs.getObject("email"));

System.out.println(rs.getObject("birthday"));

System.out.println("---------------------------");

}//6 關閉Connection

rs.close();

stmt.close();

conn.close();

}

}

# 利用JDBC實現對數據庫的增刪改查

// 增加數據

public void testInsert() throwsException{//注冊驅動

Class.forName("com.mysql.jdbc.Driver");//獲取連接Connection

Connection conn = DriverManager.getConnection("dbc:mysql://localhost:3306/mydatabase","root", "123456");//得到執行sql語句的對象statement

Statement stmt =conn.createStatement();//執行sql語句,并得到返回結果(當返回的結果大于0時,表示插入數據成功)

int flag = stmt.executeUpdate("insert into t_user(name,password,email,birthday) values ('cat','123456','cat@163.com','1993-11-11')");if(flag > 0){

System.out.println("成功");

}//關閉資源

stmt.close();

conn.close();

}

// 更新數據

public void testDelete() throwsException{//注冊驅動

Class.forName("com.mysql.jdbc.Driver");//獲取連接Connection

Connection conn = DriverManager.getConnection("dbc:mysql://localhost:3306/mydatabase","root", "123456");//得到執行sql語句的對象statement

Statement stmt =conn.createStatement();//執行sql語句,并得到返回結果

int flag = stmt.executeUpdate("delete from t_user where name='cat'");if(flag > 0){

System.out.println("成功");

}//關閉資源

stmt.close();

conn.close();

}

# 注:上方兩個程序存在的問題:如果在"執行sql語句,并返回結果"時發生異常,程序就會停止,而前面所得資源還未關閉,所以可以將關閉資源得代碼放在funally中,具體修改代碼如下

public static voidmain(String[] args) {

Connection conn= null;

Statement stmt= null;

ResultSet rs= null;//注冊驅動

try{

Class.forName("com.mysql.jdbc.Driver");//獲取連接Connection

conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root","12456");//得到執行sql語句的對象Statement

stmt =conn.createStatement();//執行sql語句,并返回結果

rs = stmt.executeQuery("select id,name,password,email,birthday from t_user");//處理結果

while(rs.next()) {

System.out.println(rs.getObject("id"));

System.out.println(rs.getObject("name"));

System.out.println(rs.getObject("password"));

System.out.println(rs.getObject("email"));

System.out.println(rs.getObject("birthday"));

System.out.println("------------");

}

}catch(ClassNotFoundException e) {

e.printStackTrace();

}catch(SQLException e) {

e.printStackTrace();

}finally{//關閉Connection

try{if(rs != null){

rs.close();

}

rs= null;if(stmt != null){

stmt.close();

}

stmt= null;if(conn != null){

conn.close();

}

conn= null;

}catch(SQLException e) {

e.printStackTrace();

}

}

}

}

// 查看數據

# 查找數據庫文件public voidtestSelect(){

Connection conn= null;

Statement stmt= null;

ResultSet rs= null;try{//注冊驅動

Class.forName("com.mysql.jdbc.Driver");//獲取連接Connection

conn = DriverManager.getConnection("dbc:mysql://localhost:3306/mydatabase","root", "123456");//得到執行sql語句的對象Statement

stmt =conn.createStatement();//執行sql語句,并返回結果

rs = stmt.executeQuery("select id,name,password,email,birthday from t_user");//處理結果

List userList = new ArrayList<>();//User u = new User(); 如果將創建用戶對象放于循環外,就指的是創建一個用戶對象,這個用戶對象被不斷的賦值,

在List中添加的每一個數據對象,都是指向了同一個用戶對象,它們的值都是最后一個添加的數據的值

while(rs.next()) {

User u= new User();//每循環一次創建一個對象,后依據下方代碼給對象賦值,后將被賦值的用戶對象添加到userList中

u.setId(rs.getInt("id"));

u.setName(rs.getString("name"));

u.setPassword(rs.getString("password"));

u.setEmail(rs.getString("email"));

u.setBirthday(rs.getDate("birthday"));

userList.add(u);//將數據存儲到List中

}

System.out.println(userList);

}catch(ClassNotFoundException e) {

e.printStackTrace();

}catch(SQLException e) {

e.printStackTrace();

}finally{//關閉Connection

try{if(rs != null){

rs.close();

}if(stmt != null){

stmt.close();

}if(conn != null){

conn.close();

}

}catch(SQLException e) {

e.printStackTrace();

}

}

}//User.java文件

public classUser {private intid;privateString name;privateString password;privateString email;privateDate birthday;public intgetId() {returnid;

}public void setId(intid) {this.id =id;

}publicString getName() {returnname;

}public voidsetName(String name) {this.name =name;

}publicString getPassword() {returnpassword;

}public voidsetPassword(String password) {this.password =password;

}publicString getEmail() {returnemail;

}public voidsetEmail(String email) {this.email =email;

}publicDate getBirthday() {returnbirthday;

}public voidsetBirthday(Date birthday) {this.birthday =birthday;

}

@OverridepublicString toString() {return "User [id=" + id + ", name=" + name + ", password=" + password + ", email=" + email + ",

birthday="+ birthday + "]";

}

}

# jdk7 和 JDBC4.1后正確關閉資源的方式

@Testpublic voidtestSelect() {//注冊驅動

try{

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

}catch(ClassNotFoundException e) {

e.printStackTrace();

}//獲取連接Connection

try (Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "root","123456");//得到執行sql語句的對象Statement

Statement stmt =conn.createStatement();//執行sql語句,并返回結果

ResultSet rs = stmt.executeQuery("select id,name,password,email,birthday from t_user")) {//處理結果

List userList = new ArrayList<>();while(rs.next()) {

User u= newUser();

u.setId(rs.getInt("id"));

u.setName(rs.getString("name"));

u.setPassword(rs.getString("password"));

u.setEmail(rs.getString("email"));

u.setBirthday(rs.getDate("birthday"));

userList.add(u);

}

System.out.println(userList);

}catch(SQLException e) {

e.printStackTrace();

}

}

}

# 在配置文件中存儲JDBC相關配置信息

//新建配置文件(src下創建)db.properties

driverClass=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/mydatabase

username=root

password=123456

//加載配置文件(創建一個工具類)public classDBUtil {private staticString driverClass;private staticString url;private staticString username;private staticString password;static{

ResourceBundle rb= ResourceBundle.getBundle("db");

driverClass= rb.getString("driverClass");

url= rb.getString("url");

username= rb.getString("username");

password= rb.getString("password");try{//注冊驅動

Class.forName(driverClass);

}catch(ClassNotFoundException e) {

e.printStackTrace();

}

}public static Connection getConnection() throwsSQLException{returnDriverManager.getConnection(url, username, password);

}

}

# 改造后的查看結果程序

public voidtestSelect() {//獲取連接Connection

try(

Connection conn=DBUtil.getConnection();//得到執行sql語句的對象Statement

Statement stmt =conn.createStatement();//執行sql語句,并返回結果

ResultSet rs = stmt.executeQuery("select id,name,password,email,birthday from t_user")) {//處理結果

List userList = new ArrayList<>();while(rs.next()) {

User u= newUser();

u.setId(rs.getInt("id"));

u.setName(rs.getString("name"));

u.setPassword(rs.getString("password"));

u.setEmail(rs.getString("email"));

u.setBirthday(rs.getDate("birthday"));

userList.add(u);

}

System.out.println(userList);

}catch(SQLException e) {

e.printStackTrace();

}

}

# 模擬用戶進行登錄

//模擬登錄

public classLoginService {publicUser findUserByNameAndPassword(String name, String password) {

User u= null;

String sql= "select id,name,password,email,birthday from t_user where name='" + name + "' and password='" + password + "'";

System.out.println(sql);//獲取連接Connection

try (Connection conn =DBUtil.getConnection();//得到執行sql語句的對象Statement

Statement stmt =conn.createStatement();//執行sql語句,并返回結果

ResultSet rs =stmt.executeQuery(sql)) {//處理結果

while(rs.next()) {

u= newUser();

u.setId(rs.getInt("id"));

u.setName(rs.getString("name"));

u.setPassword(rs.getString("password"));

u.setEmail(rs.getString("email"));

u.setBirthday(rs.getDate("birthday"));

}

}catch(SQLException e) {

e.printStackTrace();

}returnu;

}

}//輸入用戶名和密碼

public classLogin {public static voidmain(String[] args) {

Scanner input= newScanner(System.in);

System.out.println("請輸入用戶名:");

String name=input.nextLine();

System.out.println("請輸入密碼:");

String password=input.nextLine();//LoginService ls = new LoginService();

LoginServiceNew ls = newLoginServiceNew();

User u=ls.findUserByNameAndPassword(name, password);if(u == null){

System.out.println("用戶名或密碼錯誤!");

}else{

System.out.println("登錄成功!");

}

}

}

# 模擬用戶登錄存在的問題 (sql注入問題)

當登陸時輸入

用戶名

user1

密碼

hello' or 1='1此時的sql語句為"select id,name,password,email,birthday from t_user where name='user1' and password='hello' or 1='1'"注意看后面的or1='1' //當前面的用戶名和密碼對不上時為false,然而后面的1='1'的值都是true所以還是可以查出結果的

可以解決sql注入問題

PreparedStatement性能高于Statement(PreparedStatement有個預編譯的效果)public classLoginServiceNew {publicUser findUserByNameAndPassword(String name, String password) {

User u= null;

String sql= "select id,name,password,email,birthday from t_user where name=? and password=?";

System.out.println(sql);//獲取連接Connection

try (Connection conn =DBUtil.getConnection();

stmt=conn.prepareStatement(sql)) {

stmt.setString(1, name); //相當于對第一個 "?"賦值

stmt.setString(2, password); //相當于對第二個 "?"賦值

try (//執行sql語句,并返回結果

ResultSet rs =stmt.executeQuery()) {//處理結果

while(rs.next()) {

u= newUser();

u.setId(rs.getInt("id"));

u.setName(rs.getString("name"));

u.setPassword(rs.getString("password"));

u.setEmail(rs.getString("email"));

u.setBirthday(rs.getDate("birthday"));

}

}

}catch(SQLException e) {

e.printStackTrace();

}returnu;

}

}

# 利用上方的方法修改插入數據

@Testpublic voidtestInsert() {

String sql= "insert into t_user(name,password,email,birthday) values (?,?,?,?)";try(

Connection conn=DBUtil.getConnection();

PreparedStatement stmt=conn.prepareStatement(sql);

) {

stmt.setString(1, "dog");

stmt.setString(2, "123456");

stmt.setString(3, "dog@163.com");//stmt.setDate(4, new java.sql.Date(new Date().getTime()));

stmt.setString(4, "1997-07-01");int flag =stmt.executeUpdate();if (flag > 0) {

System.out.println("成功");

}else{

System.out.println("插入失敗");

}

}catch(SQLException e) {

e.printStackTrace();

}

}

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的java jdbc in list_javaweb_JDBC的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。