1. 程式人生 > >JDBC 增、查、刪、改 和 防止sql注入登入

JDBC 增、查、刪、改 和 防止sql注入登入

package cn.mxl.jdbc04;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/**
 * 
 * 	JDBC   增
 * 
 *	JDBC 增加表中的資料    用SQL語句
 *	
 * 	@author 
 *
 */
public class Test_JDBC {

	public static void main(String[] args) {
		Connection conn =null;
		// 載入驅動
		try {
			// 之所以要使用下面這條語句,是因為要使用MySQL的驅動,所以我們要把它驅動起來,  
			// 可以通過Class.forName把它載入進去,也可以通過初始化來驅動起來
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}

		// 建立連線
		try {
			//// MySQL的JDBC : jdbc:mysql://主機名稱:連線埠/資料庫的名稱,賬號,密碼
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/JDBC","meng","3588105");
			System.out.println("建立連線成功");
			
//			Statement是用來向資料庫傳送要執行的SQL語句的!
//			Statement stmt =null;也可以定義全域性變數 
			Statement stmt = conn.createStatement();
			
			//增加資料
			String sql ="insert into student(NO,name) values('2002','郭嘉')";
			int ret =stmt.executeUpdate(sql);

		} catch (SQLException e) {
			System.out.println("Mysql操作錯誤");
			e.printStackTrace();
		}finally {
			// 關閉連線
			if (conn!=null) {
				try {
					conn.close();
					System.out.println("關閉連線成功");
				} catch (SQLException e) {
					System.out.println("關閉連接出現錯誤");
					e.printStackTrace();
				}
			}
		}
	}

}

package cn.mxl.jdbc03;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
 * 
 * JDBC   查
 * 
 *JDBC 查看錶中指定列資料
 * @author 
 *
 */
public class Test_JDBC {

	public static void main(String[] args) {
		Connection conn = null;


		String sql; 
		// 載入驅動
		try {
			// 之所以要使用下面這條語句,是因為要使用MySQL的驅動,所以我們要把它驅動起來,  
			// 可以通過Class.forName把它載入進去,也可以通過初始化來驅動起來
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}

		// 建立連線
		try {
			//		    MySQL的JDBC : jdbc:mysql://主機名稱:連線埠/資料庫的名稱,賬號,密碼
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/JDBC","meng","3588105");
			System.out.println("建立連線成功");


			//			Statement是用來向資料庫傳送要執行的SQL語句的!Statement 
			//			Statement stmt =null;也可以定義全域性變數 
			Statement stmt = conn.createStatement();

			//			查詢所有表中資料 需要定義一個ResultSet (檢視資料)
			//			ResultSet rt = null;也可以定義全域性變數 
			ResultSet rt =stmt.executeQuery("select * from student");

			//一次查詢一條,可以用迴圈查詢。
			while(rt.next()){
				System.out.println(rt.getString("NO")+"\t"+rt.getString("name"));
				//System.out.println(rt.getString(1)+"\t"+rt.getString(2));
			}

		} catch (SQLException e) {
			System.out.println("Mysql操作錯誤");
			e.printStackTrace();
		}finally {
			// 關閉連線
			if (conn!=null) {
				try {
					conn.close();
					System.out.println("關閉連線成功");
				} catch (SQLException e) {
					System.out.println("關閉連接出現錯誤");
					e.printStackTrace();
				}
			}
		}
	}

}

package cn.mxl.jdbc05;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/**
 * 
 * 	JDBC   刪
 * 
 *	JDBC 刪除表中的資料    用SQL語句
 *	
 * 	@author 
 *
 */
public class Test_JDBC {

	public static void main(String[] args) {
		Connection conn =null;
		// 載入驅動
		try {
			// 之所以要使用下面這條語句,是因為要使用MySQL的驅動,所以我們要把它驅動起來,  
			// 可以通過Class.forName把它載入進去,也可以通過初始化來驅動起來
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}

		// 建立連線
		try {
			//// MySQL的JDBC : jdbc:mysql://主機名稱:連線埠/資料庫的名稱,賬號,密碼
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/JDBC","meng","3588105");
			System.out.println("建立連線成功");
			
//			Statement是用來向資料庫傳送要執行的SQL語句的!
//			Statement stmt =null;也可以定義全域性變數 
			Statement stmt = conn.createStatement();
			
			//刪除資料
			String sql = "delete from student where NO='2012001'";
			int ret =stmt.executeUpdate(sql);




		} catch (SQLException e) {
			System.out.println("Mysql操作錯誤");
			e.printStackTrace();
		}finally {
			// 關閉連線
			if (conn!=null) {
				try {
					conn.close();
					System.out.println("關閉連線成功");
				} catch (SQLException e) {
					System.out.println("關閉連接出現錯誤");
					e.printStackTrace();
				}
			}
		}
	}

}
package cn.mxl.jdbc02;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
/**
 * 
 * 	JDBC   改
 * 
 *	JDBC 更新(改)表中的資料 用SQL語句update
 *	stmt.executeLargeUpdate
 * 	@author 
 *
 */
public class Test_JDBC {

	public static void main(String[] args) {
		Connection conn = null;
		
		
		// 載入驅動
		try {
			// 之所以要使用下面這條語句,是因為要使用MySQL的驅動,所以我們要把它驅動起來,  
			// 可以通過Class.forName把它載入進去,也可以通過初始化來驅動起來
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}

		// 建立連線
		try {
			//// MySQL的JDBC : jdbc:mysql://主機名稱:連線埠/資料庫的名稱,賬號,密碼
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/JDBC","meng","3588105");
			System.out.println("建立連線成功");
			
//			Statement是用來向資料庫傳送要執行的SQL語句的!
//			Statement stmt =null;也可以定義全域性變數 
			Statement stmt = conn.createStatement();
			
			//更新資料(更改資料)
			String sql ="update student set name='諸葛亮' where NO=2012002";
			int ret =stmt.executeUpdate(sql);
			
			




		} catch (SQLException e) {
			System.out.println("Mysql操作錯誤");
			e.printStackTrace();
		}finally {
			// 關閉連線
			if (conn!=null) {
				try {
					conn.close();
					System.out.println("關閉連線成功");
				} catch (SQLException e) {
					System.out.println("關閉連接出現錯誤");
					e.printStackTrace();
				}
			}
		}
	}

}

建立表和向表插入資料

package cn.mxl.jdbc01;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.apache.log4j.Logger;

/**
 * 1.JDBC連線資料庫
 * 2.建立表和向表插入資料
 * 
 * 
 * @author 
 *
 */

public class Test_JDBC {
	// 出現異常用LOG4J記錄異常資訊
	// private static Logger logger =Logger.getLogger(Test_JDBC.class.getName());
	public static void main(String[] args) {
		Connection conn = null;
		Statement stmt = null;
	
		// 載入驅動
		try {
            // 之所以要使用下面這條語句,是因為要使用MySQL的驅動,所以我們要把它驅動起來,  
            // 可以通過Class.forName把它載入進去,也可以通過初始化來驅動起來
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
		// 建立連線
		try {
			//// MySQL的JDBC : jdbc:mysql://主機名稱:連線埠/資料庫的名稱,賬號,密碼
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/JDBC","meng","3588105");
			System.out.println("建立連線成功");
			//在這裡寫操作資料庫的SQL程式碼
            // Statement裡面帶有很多方法,比如executeUpdate可以實現插入,更新和刪除等  
            stmt = conn.createStatement();
            //定義表結構
            String sql = "create table student(NO char(20),name varchar(20),primary key(NO))";  
            int result = stmt.executeUpdate(sql);// executeUpdate語句會返回一個受影響的行數,如果返回-1就沒有成功  
            if (result != -1) {  
                System.out.println("建立資料表成功");
                //sql語句插入資料
                sql = "insert into student(NO,name) values('2012001','陶偉基')";  
                result = stmt.executeUpdate(sql);  
                //sql語句插入資料
                sql = "insert into student(NO,name) values('2012002','周小俊')";  
                result = stmt.executeUpdate(sql); 
                //sql語句插入資料
                sql = "insert into student(NO,name) values('2012003','急急急')";  
                result = stmt.executeUpdate(sql);
                
                //查看錶中所有資訊 ResultSet
                sql = "select * from student";  
                ResultSet rs = stmt.executeQuery(sql);// executeQuery會返回結果的集合,否則返回空值  
                System.out.println("學號\t姓名");  
                while (rs.next()) {  
                    System.out.println(rs.getString(1) + "\t" + rs.getString(2));// 入如果返回的是int型別可以用getInt()  
                }  
            } 
			
		} catch (SQLException e) {
			System.out.println("Mysql操作錯誤");
			e.printStackTrace();
		}finally {
			// 關閉連線
			if (conn!=null) {
				try {
					conn.close();
					System.out.println("關閉連線成功");
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}

	}

}












package cn.jdbc.denglu;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class Test_JDBC {
	/**
	 * jdbc通過資料庫進行賬號密碼驗證。
	 * @param args
	 */

	public static void main(String[] args) {
		Connection conn =null;
		//Statement stmt =null;
		PreparedStatement stmt = null;
		ResultSet rt = null;
		
		Scanner input = new Scanner(System.in);
		System.out.println("\t請輸入賬號和密碼");
		System.out.println("請輸入賬號:");
		String name=input.next();
		System.out.println("請輸入密碼:");
		String password =input.next();
	
		//載入驅動
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		//建立連線
		try {
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc", "meng", "3588105");
			//用?佔位符 代表
			String sql ="select * from student where name=?and password=?"; 
			
			stmt = conn.prepareStatement(sql);
			//兩個引數,1是第一個?是第二個? 第二個引數 是 輸入的值
			stmt.setObject(1, name);
			stmt.setObject(2, password);
			rt=stmt.executeQuery();
			if (rt.next()) {
				System.out.println("登入成功!!!");
			}else {
				System.out.println("登入失敗,重新輸入。");
			}
		
		}
		 catch (SQLException e) {
			e.printStackTrace();
		}
		
		//關閉連線
		if (conn!=null) {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if (stmt!=null) {
			try {
				stmt.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if (rt!=null) {
			try {
				rt.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		

	}

}


相關推薦

JDBC 防止sql注入登入

package cn.mxl.jdbc04; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement

JDBC刪改--資料庫增加刪除更新查詢例項

package cn.com.JDBC; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; pu

mysql初始化刪改用戶授權

ear stat bit col led inf lis fec part 1. 數據庫安全初始化 [root@elasticsearch my.cnf.d]# mysql_secure_installation #安全初始化命令 NOTE: RUNNING

實現刪改(SpringBootMyBatis-Plus與Thymeleaf)

show me the code and talk to me,做的出來更要說的明白 我是布林bl,你的支援是我分享的動力! 1 引入 使用 MyBatis-Plus 以及 thymeleaf 實現增刪查改。效果圖在最後。 2 Mybatis-Plus MyBatis-Plus(簡稱 MP)是一個 MyB

Centos中iptablesfirewall防火墻開啟關閉看狀態基本設置等(轉)

firewall 開啟 highlight tar service服務 sha sysconfig linu accept iptables防火墻 1、基本操作 # 查看防火墻狀態 service iptables status # 停止防火墻 service ip

PHP MYSQL 刪改 jsonDel

let ade content sql數據庫 pre state 網站建設 password roo <?php //header("Content-type: text/html; charset=UTF8"); //header("Content-Type: t

Oracle刪改--之

Oracle增刪改查--之刪Oracle增刪改查--之刪 1、刪除數據庫用戶 SQL> conn /as sysdbaConnected.SQL> drop user feiyu cascade;用戶已刪除如果用戶無法刪除,並報錯:ERROR at line 1:ORA-01940: canno

MySQL刪改--之

MySQL刪除數據MySQL刪除數據 1、刪除haha數據庫 drop database 庫名; 2、刪除表 (兩種方式) (1)在user表當前路徑直接刪除 drop table 表名; (2)不在當前user表路徑並指定路徑刪除表 drop table 庫名.表名; 3、刪除表中記錄(兩種

JDBC刪改操作總結

JDBC增刪改查操作總結 1.Insert插入操作 使用jdbcTemplate的update()方法執行 例子 private final static String INSERT_USER_SQL= "INSERT INTO t_user(user_id,user_num,user_

JDBC刪改方法小記(2個表相關聯)

第一個類引用http://blog.csdn.net/bhq2010/article/details/7478659 SingletonConn類: import java.sql.Connection; import java.sql.DriverManager; import jav

資料庫 (JDBC刪改

                                                 開發步驟 一.匯入jar包   1.匯入mysql-connector-java-5.1.0-bin.jar包; 二.寫實體類:(實體層) package com.y

JDBC刪改示例程式碼

首先使用如下SQL語句生成一個users表 create table users( id int primary key auto_increment, name varchar(40), password varchar(40), email va

大資料Hive系列之Hive API(jdbc刪改 &)

Maven依賴配置 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schema

Oracle與jdbc刪改CRUD(Create-Read-Update-Delete)

一、建立oracle資料庫使用者並建表,插入測試資料 1.啟動oracle監聽程式並連線oracle資料庫的服務 開啟我的電腦--管理--服務和應用程式--服務,找到服務 OracleOraDb11g_home1TNSListener和OracleServiceORCL,啟

JDBC刪改例項

//增public boolean insert(Users entity) {//宣告返回值變數boolean flag = false;//獲取連線物件conn = JdbcUtil.getConn();//定義sql語句String sql = "insert into users(id,name,pa

prepareStatement進行刪改---填充佔位符(防止sql注入

首先建立表 然後構造一個實體類–封裝資料庫欄位 Student package com.godinsec; public class Student { private int id; private String name;

關於jdbc 刪改通用的方法,只需要傳sql語句查詢條件

//第二個引數為給佔位符賦值,可以理解為一個數組 //例如executeUpdate("select *from user where id=? and pwd =?","admin","123") public int executeUpdate(String sql,O

玩轉JDBC打造資料庫操作萬能工具類JDBCUtil,加入了高效的資料庫連線池,利用了引數繫結有效防止SQL注入

SELECT * FROM emp_test 成功查詢到了14行資料 第1行:{DEPT_TEST_ID=10, EMP_ID=1001, SALARY=10000, HIRE_DATE=2010-01-12, BONUS=2000, MANAGER=1005, JOB=Manager, NAME=張無忌}

jdbc防止sql注入方法總結

參考:http://hi.baidu.com/wangyue06/item/c00c824b35cf740ae835049c 1.傳統JDBC,採用PreparedStatement 。預編譯語句集,內建了處理SQL注入的能力 String sql= "selec

JDBC:使用PreparedStatement防止SQL注入

   1.關於SQL注入 什麼是SQL注入: 由於jdbc程式在執行的過程中sql語句在拼裝時使用了由頁面傳入引數,如果使用者惡意傳入一些sql中的特殊關鍵字,會導致sql語句意義發生變化,這種攻擊方式就叫做sql注入,參考使用者註冊登入案例。   首先看一下以下程式碼: