JAVA之操作資料庫增刪改查-JDBC的使用
阿新 • • 發佈:2018-12-25
一。準備工作:
1.操作資料庫的JDBC.jar包,下載地址:http://download.csdn.net/detail/qq_33750826/9671725
2.如果你的電腦為安裝mysql請安裝mysql,下載地址:http://download.csdn.net/detail/qq_33750826/9671736
安裝方式:http://jingyan.baidu.com/article/f79b7cb35c0f439144023e38.html
下載地址附有安裝失敗的解決辦法
3.下載與java配合使用的資料庫,下載地址:http://download.csdn.net/detail/qq_33750826/9671745
記住上面mysql成功正確之後才可以使用sqlyog,否則建立連線一直會失敗的
4.建立java Project將下載的jdbc包匯入到專案中:點選專案->右鍵->Build Path->Configure Build Path->libraries->Add External JARs,找到下載的jdbc包路徑匯入,點選確定->Apply
5.安裝sqlyog並能夠連線上資料庫之後首先在sqlyog資料庫中建立一個數據庫:
之後建立表:
這是我已經建立好的表
、
準備工作到上面就結束了。
如果上面都做成功了那麼下面進入程式碼階段:
二.程式碼部分
1.找到準備工作中建立的java Project專案,我先寫好了一個輔助類:
package com.example.javajdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DbHelper {
/**
* 建立連結
* */
public static Connection getconnection() {
try{
//獲得操作管理者的驅動程式,也就是DriverManager
Class.forName("com.mysql.jdbc.Driver");
//通過jdbc連線mysql,獲得連線物件
return DriverManager.getConnection("jdbc:mysql://localhost:3306/wttest", "root", "123456");
}catch (Exception e) {
e.printStackTrace();
return null;
}
}
//關閉連線
public static void closeConnectionAndStatement(Connection con,Statement st,ResultSet oSet){
try {
if(st!=null)st.close();
if(con!=null)con.close();
if (oSet!=null) {
oSet.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
2.插入:
package com.example.javajdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class InsertJDBC {
public static void main(String[] args) {
DbHelper helper=new DbHelper();
Connection connection=helper.getconnection();
insertTwo(connection);
}
public static void insertOne(Connection connection){
String sql="insert into people(name,age,sex) values('jhl','100','male')";
PreparedStatement ps = null;
try {
//將sql語句提交到資料庫進行預編譯
ps=connection.prepareStatement(sql);
int i=ps.executeUpdate();
if (i>0) {
System.out.println("新增成功");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
if (connection!=null) {
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (ps!=null) {
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public static void insertTwo(Connection connection){
String sql="insert into people(name,age,sex) values(?,?,?)";
PreparedStatement ps = null;
try {
//將sql語句提交到資料庫進行預編譯
ps=connection.prepareStatement(sql);
ps.setString(1, "jhl2");
ps.setString(2, "102");
ps.setString(3, "female");
int i=ps.executeUpdate();
if (i>0) {
System.out.println("新增成功");
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
if (connection!=null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (ps!=null) {
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
3.更新
package com.example.javajdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Savepoint;
import javax.naming.ConfigurationException;
public class UpdateJDBC {
public static void main(String[] args) throws SQLException {
DbHelper helper = new DbHelper();
Connection connection = helper.getconnection();
//updateOne(connection);
updateTwo(connection);
}
public static void updateOne(Connection connection) throws SQLException {
String sql = "update people set age='200' where name='jhl2'";
/**
* 自動提交為false表示如果沒有執行commit()方法則不會提交更新 和沒有執行rollback()取消savepoint的更新
* 如果連線處於自動提交模式下,則它的所有 SQL 語句將被執行並作為單個事務提交。 否則,它的 SQL 語句將聚集到事務中,直到呼叫
* commit 方法或 rollback 方法為止。 預設為true,自動提交更新
*/
connection.setAutoCommit(false);
PreparedStatement ps = connection.prepareStatement(sql);
int i = ps.executeUpdate();//對於這個返回值表示你提供的sql語句要更新了多少行,如果沒有更新則返回0,否則返回更新的數量
System.out.println(i);
if (i >= 0) {
connection.commit();
connection.close();
ps.close();
System.out.println("更新成功");
} else {
connection.close();
ps.close();
System.out.println("更新失敗");
}
}
public static void updateTwo(Connection connection) throws SQLException {
String sql = "update people set age='400' where age='4100'";
connection.setAutoCommit(false);
/**
* 設定一個儲存點,方便取消某些更新
*/
Savepoint savepoint = connection.setSavepoint();
PreparedStatement ps = connection.prepareStatement(sql);
//對於這個返回值表示你提供的sql語句要更新了多少行,如果沒有更新則返回0,否則返回更新的數量
int i=ps.executeUpdate();
System.out.println(i);
if (i >=0 ) {
//如果添加了此行就算你commit了還是不會更新資料,因為你在commit之前已經roolback回滾了,就是取消更新了
//connection.rollback(savepoint);
connection.commit();
connection.close();
ps.close();
System.out.println("更新成功");
} else {
connection.rollback(savepoint);
connection.close();
ps.close();
System.out.println("更新失敗");
}
}
}
4.查詢:
將查詢物件放在people類中
package com.example.javajdbc;
public class People {
String name;
String age;
String sex;
public People(String name, String age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
4.1
package com.example.javajdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;
public class SelectJDBC {
public static void main(String[] args) throws SQLException {
DbHelper helper = new DbHelper();
Connection connection = helper.getconnection();
// selectOne(connection);
selectTwo(connection);
}
public static void selectOne(Connection connection) throws SQLException {
String sql = "select * from people";
PreparedStatement ps = connection.prepareStatement(sql);
ResultSet rSet = ps.executeQuery();
while (rSet.next()) {
System.out.println(rSet.getString("age"));
}
connection.close();
ps.close();
}
public static void selectTwo(Connection connection) throws SQLException {
String sql = "select * from people";
PreparedStatement ps = connection.prepareStatement(sql);
ResultSet rSet = ps.executeQuery();
People people;
ArrayList<People> list = new ArrayList<People>();
while (rSet.next()) {
String name = rSet.getString("name");
String age = rSet.getString("age");
String sex = rSet.getString("sex");
people = new People(name, age, sex);
list.add(people);
}
Iterator<People> iterator = list.iterator();
while (iterator.hasNext()) {
People people2 = iterator.next();
System.out.println(people2.getName() + "," + people2.getAge() + "," + people2.getSex());
}
}
}
5.刪除:
package com.example.javajdbc;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class DeleteJDBC {
public static void main(String[] args) throws SQLException {
DbHelper helper=new DbHelper();
Connection connection=helper.getconnection();
deleteOne(connection);
}
public static void deleteOne(Connection connection) throws SQLException{
String sql="delete from people where age=400";
PreparedStatement ps=connection.prepareStatement(sql);
//對於這個返回值表示你提供的sql語句要delete了多少行,如果沒有delete則返回0,否則返回delete的數量
int i=ps.executeUpdate();
if (i>=0) {
ps.close();
connection.close();
System.out.println("刪除成功");
}else {
ps.close();
connection.close();
System.out.println("刪除失敗");
}
}
}