1. JAVA 訪問數據庫的技術:
Jdbc是一種Java連接數據庫技術(Java database connectity), 它是 Java 提供的一些接口,這些接口大部分是數據庫廠商提供的(jar包),我們要做的,是連接數據庫以後,如何使用Java代碼從數據庫中存取數據!
代碼下面有對每一步 詳細的介紹
public class MyUtils {
private static final String USER = "root";//連接的用戶名
private static final String PASSWORD= "123456";//連接的密碼
private static final String URL = "jdbc:mysql://localhost:3306/canteen";//連接的端口號+數據庫名
private MyUtils(){}//構造函數聲明成私有的不能被new對象
static {
try {
Class.forName("com.mysql.jdbc.Driver");//獲取數據庫驅動
} catch (ClassNotFoundException e){
e.printStackTrace();
}
}
public static Connection getConnection(){
Connection conn = null;//獲取數據庫鏈接
try {
conn = DriverManager.getConnection(URL,USER,PASSWORD);//連接的端口號 用戶名 密碼
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void releaseResource(Connection conn, Statement statement){//關閉數據庫連接
try {
statement.close();
conn.close();
} catch (SQLException e){
e.printStackTrace();
}
}
//關閉數據庫連接 並關閉從數據庫中獲取的結果集。(resultSet結果集)
public static void releaseResource(Connection conn, Statement statement, ResultSet res){
try {
statement.close();
conn.close();
res.close();//關閉結果集
} catch (SQLException e){
e.printStackTrace();
}
}
}
//MySQL驅動固定寫法!注意是”MySQL數據庫的驅動”
Class.forName("com.mysql.jdbc.Driver");
連接數據庫必要的參數:
URL: 訪問數據庫的地址:寫法:jdbc:mysql://數據庫所在Ip地址:數據庫端口/數據庫的名字
name : 要連接的數據庫的賬戶名
password : 要連接數據庫的用戶密碼
//找到本機的數據庫應用,3306是數據庫的默認端口 8080是tomkat的默認端口
String url = "jdbc:mysql://localhost:3306/student";
String name = "root";//將要連接數據庫的賬戶
String password = "root";//將要連接數據庫的密碼
Connection connection = DriverManager.getConnection(url,name,password);獲得執行sql語句的對象
用於執行SQL語句
PreparedStatement接口繼承了Statement,
Statement(固定),和 PreparedStatement(可變參數) 是SQL語句的兩種執行方式
已知參數用Statement
未知參數用PreparedStatement(就是你不知道你要獲取的是什麼)
1.在遇到要執行的SQL語句是帶可變參數的時候,就用PreparedStatement對象,應爲PreparedStatement可以用佔位符將SQL語句加入可變參數!:String sql = "insert into user(sno,name,age)values(?,?,?)";//定義一個要執行的SQL語句
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1,student.getSno());//設置SQL語句的第一個參數
ps.setString(2,student.getName());//設置SQL語句的第二個參數
ps.setInt(3,student.getAge());//設置SQL語句的第三個參數
2.當要執行的SQL語句的是不帶可變參數的時(就是SQL語句不變時!): String sql = "SELECT * FROM user";
Statement statement = connection.createStatement();//sql語句的執行對象
ResultSet row = statement.executeQuery(sql);//執行SQL語句
PreparedStatement 和Statement的區別:PreparedStatement:用戶通過你係統輸入變量時,變量將加入你的SQL語句,這樣就能在不知道你的用戶輸入的情況下,獲取信息
執行SQL語句
兩種語句:
1).不用返回數據庫信息: 增,刪,改
exexuteUpdate() 方法 : 返回一個整形(對數據庫影響的行數)
如果int a=0,那麼如果數據庫裏的內容有變動,a=exexuteUpdate 中a=1。
查
exexuteQuery() 方法 : 返回一個結果集對象(Resultest 在數據庫中查到的一條數據)
讀取返回對象集中的數據的方法: (就是集合的迭代器)
Resultest.next()能夠返回給你還有沒有記錄,
getObjeck方法,讀取一條記錄裏面字段所對應的值
處理執行後的結果
調用Dao的方法後返回一個結果給servlet 讓servlet進行處理!:如:int row = UserDAD.insert(student);
if (row==1){
jsonObject.put("code",1);
jsonObject.put("msg","添加成功");
jsonObject.put("data",student);
}else {
jsonObject.put("code",2);
jsonObject.put("msg","添加失敗");
}
釋放資源
將用到的傳輸有關的對象再傳輸完成後統統釋放! 如:ps.close();
connection.close();