import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import org.junit.Test;
/**
*
* @author Administrator
*
*/
public class MysqlConnection {
@Test
public void testMysqlConnection() {
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
// 先進行插入數據
for (int i = 1; i <= 10; i++) {
// 下面的這個只是準備sql語句
PreparedStatement pps = con.prepareStatement("insert into student(name,age) value('bbbb',45)");
// 進行執行sql的語句
int result = pps.executeUpdate();
System.out.println("查詢的結果如下:" + result);
}
con.close();
// con.prepareStatement("select * from student");//這個可以防止注入的操作
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void Testlogin() {
try {
login1("bbb", "123456");// createStatement存在sql語句注入的問題
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 下面的這個方法存在sql的注入的問題,因爲我們使用的是perastatement的對像
*
* @param username
* @param password
* @throws Exception
*/
public void login1(String username, String password) throws Exception {
// 註冊我一個mysql的驅動
Class.forName("com.mysql.jdbc.Driver");
// 進行獲取連接對象
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
// 準備sql的語句
String sql = "select * from user where name=? and password=?";
// 得到預編譯對像
PreparedStatement ppst = con.prepareStatement(sql);
// 進行給這個sql語句綁定綁定具體的值
ppst.setString(1, username);// 從1開始
ppst.setString(2, password);
// 進行執行具體的sql語句
ResultSet set = ppst.executeQuery();
if (set.next()) {
// 說明登錄成功了
System.out.println("登錄成功了!!");
System.out.println(sql);
} else {
System.out.println("登錄失敗了!!");
System.out.println(sql);
}
if (con != null) {
con.close();
}
}
/**
* 下面的這個案例存在sql的注入的問題
*
* @param username
* @param password
* @throws Exception
*/
public void login(String username, String password) throws Exception {
// 註冊我一個mysql的驅動
Class.forName("com.mysql.jdbc.Driver");
// 進行獲取連接對象
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
// 進行獲取執行sql語句的對象
Statement stat = con.createStatement();
// 準備sql語句
String sql = "select * from user where name='" + username + "' and password='" + password + "'";
// 進行執行sql語句
ResultSet result = stat.executeQuery(sql);// select
if (result.next()) {
// 說明登錄成功了
System.out.println("登錄成功了!!");
System.out.println(sql);
} else {
System.out.println("登錄失敗了!!");
System.out.println(sql);
}
if (con != null) {
con.close();
}
}
//下面開始操作分頁的操作
@Test
public void testDividePage(){
//頁面的長度
int pagesize=4;
//註冊連接
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
// 得到預編譯對像
PreparedStatement ppst = con.prepareStatement("select count(1) from user");
//開始執行
ResultSet result=ppst.executeQuery();
//得到總的行數
int count=0;
while(result.next()){
count=Integer.parseInt(result.getString(1));
}
System.out.println(count);
String sql="";
//現在開始進行具體的分頁的操作
for(int i=0;i<Math.ceil((double)count/4);i++){
//準備分頁的sql語句
sql="select * from user limit ?,4";
ppst = con.prepareStatement(sql);
ppst.setInt(1,i*pagesize);
//進行執行
ResultSet re=ppst.executeQuery();
System.out.println("當前是第"+i+"頁");
while(re.next()){
System.out.println("用戶名:"+re.getString("name")+": 密碼:"+re.getString("password"));
}
}
} catch (Exception e) {
e.printStackTrace();
}
//先確定每個頁的長度爲4;
//那麼則每個頁的開始位置爲(n-1)*4
}
//下面開始操作分頁的操作
@Test
public void insertData(){
//先確定每個頁的長度爲4;
//那麼則每個頁的開始位置爲(n-1)*4
//註冊連接
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
for(int i=0;i<100;i++){
//創建sql語句
String sql="insert into user(name,password) value(?,?)";
// 得到預編譯對像
PreparedStatement ppst = con.prepareStatement(sql);
//進行綁定數據
ppst.setString(1,"bbb"+i);
ppst.setString(2,"00"+i);
//開始執行
ppst.executeUpdate();
}
//最後關流
if(con!=null){
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Mysql的基本操作
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.