jdbc連接數據庫的口訣:
豬臉特直觀
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Demo03 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//口訣:豬臉特直觀
//注冊
Class.forName("com.mysql.jdbc.Driver");
//連接
Connection connention = DriverManager.getConnection("jdbc:mysql://localhost:3306/test3", "root", "ms");
String sql = "SELECT * FROM student"; //准備sql語句
//獲取Statement對象(簡稱:特)
Statement statement = connention.createStatement();
//執行
ResultSet resultSet = statement.executeQuery(sql);
while(resultSet.next()){
//ResultSet里面的get相關方法列號是從1開始的,切記。 System.out.println(resultSet.getInt(1)+","+resultSet.getString(2)+","+resultSet.getInt(3)+","+resultSet.getString(4));
}
//關閉(倒關)
resultSet.close();
statement.close();
connention.close();
}
}
- 注冊有三種方法
- 方法一:Class.forName("com.mysql.jdbc.Driver");
- 方法二:Driver driver = new com.mysql.jdbc.Driver();
//注冊
DriverManager.registerDriver(driver);
Connection Connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test3", "root", "ms");
- 方法三:DriverManager.registerDriver(new com.mysql.jdbc.Driver()); //匿名對象注冊
Connection Connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test3", "root", "ms");
- 連接有三種方法
- 方法一:Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test3", "root", "ms");
- 方法二:Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test3?user=root&password=ms");
- 方法三:String url = "jdbc:mysql://localhost:3306/test3";
Properties prop = new Properties();
prop.setProperty("user", "root");
prop.setProperty("password", "ms");
Connection connection = DriverManager.getConnection(url, prop);
接口
- Driver中的java.sql類 DriverManager
常見的方法有:getConnection(String url, String user, String password)
試圖建立到給定數據庫 URL 的連接。
- Connection接口:與特定數據庫的連接(會話)。在連接上下文中執行 SQL 語句並返回結果。
常見的方法有
close()
立即釋放此 Connection 對象的數據庫和 JDBC 資源,而不是等待它們被自動釋放。
createStatement()
創建一個 Statement 對象來將 SQL 語句發送到數據庫。
prepareStatement(String sql)
創建一個 PreparedStatement 對象來將參數化的 SQL 語句發送到數據庫。
- Statement接口:用於執行靜態 SQL 語句並返回它所生成結果的對象。
常見的方法有:
close()
立即釋放此 Statement 對象的數據庫和 JDBC 資源,而不是等待該對象自動關閉時發生此操作。
executeQuery(String sql)
執行給定的 SQL 語句,該語句返回單個 ResultSet 對象
executeUpdate(String sql)
執行給定 SQL 語句,該語句可能為 INSERT、UPDATE 或 DELETE 語句,或者不返回任何內容的 SQL 語句(如 SQL DDL 語句)。
- PreparedStatement接口
extends
Statement
表示預編譯的 SQL 語句的對象。
SQL 語句被預編譯並存儲在 PreparedStatement 對象中。然后可以使用此對象多次高效地執行該語句。
- ResultSet接口:表示數據庫結果集的數據表,通常通過執行查詢數據庫的語句生成。
常見的方法有:
close()
立即釋放此 ResultSet 對象的數據庫和 JDBC 資源,而不是等待該對象自動關閉時發生此操作。
next()
將光標從當前位置向前移一行。
getInt(int columnIndex)
以 Java 編程語言中 int 的形式獲取此 ResultSet 對象的當前行中指定列的值。
同樣的還有getByte,getString,getLong,getDouble,getBoolen,getObject等等
java.sql.statement 類 throws SQL Exception
- createStatement()
創建一個 Statement 對象來將 SQL 語句發送到數據庫。不帶參數的 SQL 語句通常使用 Statement 對象執行。如果多次執行相同的 SQL 語句,使用 PreparedStatement 對象可能更有效。
例如:適用於select查詢中
Statement statement = connention.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
- prepareStatement(String sql)
創建一個 PreparedStatement 對象來將參數化的 SQL 語句發送到數據庫。
帶有 IN 參數或不帶有 IN 參數的 SQL 語句都可以被預編譯並存儲在 PreparedStatement 對象中。然后可以有效地使用此對象來多次執行該語句。
參數:
sql - 可能包含一個或多個 '?' IN 參數占位符的 SQL 語句
以下方法中需要建立相關數據庫才能得出正確結果
例如:java 中創建類的方法,在數據庫中插入數據
public class AccountDaoImpl implements IAccountDao{
@Override
public Integer addAccount(AccountModel account) {
String sql = "INSERT INTO student VALUES(NULL,?,?)";
Connection conn = null;
PreparedStatement pstmt = null;
Integer result = null;
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test8","root","ms");
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, account.getname());
pstmt.setDouble(2, account.getage());
result = pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("新增失敗!");
} finally {
try {
DBUtil.close(pstmt, conn);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return result;
}
java EE中連接數據庫的方法,在數據庫中插入數據
以下內容請在servlet類中進行填寫,並且需要創建相關數據庫,最后在webcontant文件夾中建立HTML文件,並且運行填入數據。html文件如下
//設置字符編碼幾格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
//連接數據庫
String name=request.getParameter("name");
String ageString= request.getParameter("age");
double age=Double.parseDouble(ageString);
Connection conn=null;
PreparedStatement pstmt=null;
int result=0;
try {
conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/test8","root","ms");
String sql="INSERT INTO student(name,age) VALUES(?,?)";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setDouble(2, age);
result=pstmt.executeUpdate();
if(result>0){
response.getWriter().println("提交成功,謝謝!");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
pstmt.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
java EE中連接數據庫的方法,在數據庫中查詢數據
//設置字符編碼及文本格式
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html");
//連接數據庫
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1", "root", "ms");
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT sname,score FROM `program_score`");
PrintWriter pw = response.getWriter();
pw.println("<table border='2px solid'>");
while(rs.next()){
pw.println("<tr><td>"+rs.getString("sname")+"</td><td>"+rs.getString("score")+"</td></tr>");
}
pw.println("</table>");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
- 查找select 用.executeQuery(String sql);
ResultSet resultSet = statement.executeQuery(
String sql);
增加insert、刪除delete、改變update 用executeUpdate()
int result=PreparedStatement.executeUpdate();
executeQuery
執行給定的 SQL 語句,該語句返回單個 ResultSet 對象。
參數:
sql - 要發送給數據庫的 SQL 語句,通常為靜態 SQL SELECT 語句
返回:
包含給定查詢所生成數據的 ResultSet 對象;永遠不能為 null
拋出:
SQLException - 如果發生數據庫訪問錯誤,在已關閉的 Statement 上調用此方法,或者給定 SQL 語句生成單個 ResultSet 對象之外的任何其他內容
executeUpdate
int executeUpdate(
String sql) throws
SQLException
執行給定 SQL 語句,該語句可能為 INSERT、UPDATE 或 DELETE 語句,或者不返回任何內容的 SQL 語句(如 SQL DDL 語句)。
參數:
sql - SQL 數據操作語言(Data Manipulation Language,DML)語句,如 INSERT、UPDATE 或 DELETE;或者不返回任何內容的 SQL 語句,如 DDL 語句。
返回:
(1) 對於 SQL 數據操作語言 (DML) 語句,返回行計數 (2) 對於什么都不返回的 SQL 語句,返回 0
拋出:
SQLException - 如果發生數據庫訪問錯誤,在已關閉的 Statement 上調用此方法,或者給定的 SQL 語句生成 ResultSet 對象
