Java中對數據庫的操作一般分為三個步驟
一,加載驅動程序
Class.forName("org.postgresql.Driver");
二,打開連接
String url="jdbc:postgresql:COREJAVA";
String username="dbuser";
String password="secret";
Connection conn=DriverManager.getConnection(url,username,password);
前面兩個步驟非常的簡單,對于任意的數據庫來講都是這些內容,而說道比較多的就是第三步了
三,對數據庫進行操作
顯而易見對數據庫的操作就是執行SQL命令,首先需要創建一個Statement對象。要創建statement對象,需要使用調用DriverManager.getConnection方法所獲得的Connection對象。
Statement stmt=conn.createStatatement();
String command="UPDATE Books SET Price=Price-5.00 WHERE Title NOT LIKE '%Introduction%'";
然后調用Statement類中的executeUpdate方法: stmt.executeUpdate(command);
executeUpdate方法將返回受SQL命令影響的行數。列入,在先前的例子中調用本方法將返回那些降價5美元的圖書的總數.
executeUpdate方法既可以執行諸如INSERT,UPDATE和DELETE之類的操作,也可以執行諸如CREATE TABLE和DROP TABLE之類的數據命令。
但是,執行SELECT查詢時必須使用executeQuery方法。另外還有一個execute方法可以執行任意的SQL語句。此方法通常只用于用戶提供的交互式查詢。
當我們執行查詢操作時,通常最感興趣的是查詢結果。executeQuery方法返回一個ResultSet對象,可以通過它來每次移行地迭代遍歷所有查詢結果。 ResultSet rs=stmt.executeQuery("SELECT * FROM Books");
另外當你看這點的時候,我可以告訴你SQL的數據類型和Java的數據類型并非完全一致,我不是很想完全列出所有的對照表,因為任意的書籍上面肯定都有相關的介紹。只是下面的這幾種你最好還是記住,因為非常有可能就在你的程序中會出現錯誤,左邊為SQL右邊為Java數據類型
Interger或INT int
NUMERIC(m,n),DECIMAL(m,n)或DEC(m,n) java.math.BigDecimal
FLOAT(n) double
REAL float
DOUBLE double
下面介紹一下java.sql.Statement的常用方法,我覺得這個挺重要的
int executeUpdate(String sql)
執行字符串中指定的INSERT,UPDATE,DELETE等SQL語句。還可以執行數據定義語言(DLL)的語句,如CREATE TABLE.返回受影響的記錄總數,如果是沒有更新計數的語句,則返回-1.本著對大家和自己負責的任務我徹底用了這個函數,在執行INSERT,UPDATE,DELETE的操作的事后返回的的確是影響的函數,一般你執行一條INSERT語句的事后返回的肯定是1,此外當你執行CREATE TABLE操作的時候返回的是0.至于等于-1的情況我還沒有遇到,等遇到的時候第一時間更新此文章。
boolean execute(String sqlStatement)
執行字符串中指定的SQL語句。如果該語句返回一個結果集則該方法返回true;反之,返回false。使用getResultSet或getUpdateCount方法可以得到語句的執行結果。
int getUpdateCount()
返回受前一條更新語句影響的記錄總數。如果前一條語句未更新數據庫,則返回-1.對于每一條執行過的語句,該方法只能被調用一次。
ResultSet getResultSet()
返回前一條查詢語句的結果集。如果前一條語句未產生結果集,則返回null值。對于每一條執行過的語句,該方法只能被調用一次。
接著簡單的介紹一下PreparedStatement的用法吧,就不描述了僅給出代碼,大家肯定都會明白的
string sql = "select * from people p where p.id = ? and p.name = ?";
PreparedStatement pStmt=conn.prepareStatement(sql);
pStmt.setint(1,id);
pStmt.setstring(2,name);
resultset rs = pStmt.executequery();
==========================================================================================
pStmt = con.prepareStatement("insert into tb_name (col1,col2,col2,col4) values (?,?,?,?)");
pStmt.setString(1,var1);
pStmt.setString(2,var2);
pStmt.setString(3,var3);
pStmt.setString(4,var4);
pStmt.executeUpdate();
一,加載驅動程序
Class.forName("org.postgresql.Driver");
二,打開連接
String url="jdbc:postgresql:COREJAVA";
String username="dbuser";
String password="secret";
Connection conn=DriverManager.getConnection(url,username,password);
前面兩個步驟非常的簡單,對于任意的數據庫來講都是這些內容,而說道比較多的就是第三步了
三,對數據庫進行操作
顯而易見對數據庫的操作就是執行SQL命令,首先需要創建一個Statement對象。要創建statement對象,需要使用調用DriverManager.getConnection方法所獲得的Connection對象。
Statement stmt=conn.createStatatement();
String command="UPDATE Books SET Price=Price-5.00 WHERE Title NOT LIKE '%Introduction%'";
然后調用Statement類中的executeUpdate方法: stmt.executeUpdate(command);
executeUpdate方法將返回受SQL命令影響的行數。列入,在先前的例子中調用本方法將返回那些降價5美元的圖書的總數.
executeUpdate方法既可以執行諸如INSERT,UPDATE和DELETE之類的操作,也可以執行諸如CREATE TABLE和DROP TABLE之類的數據命令。
但是,執行SELECT查詢時必須使用executeQuery方法。另外還有一個execute方法可以執行任意的SQL語句。此方法通常只用于用戶提供的交互式查詢。
當我們執行查詢操作時,通常最感興趣的是查詢結果。executeQuery方法返回一個ResultSet對象,可以通過它來每次移行地迭代遍歷所有查詢結果。 ResultSet rs=stmt.executeQuery("SELECT * FROM Books");
另外當你看這點的時候,我可以告訴你SQL的數據類型和Java的數據類型并非完全一致,我不是很想完全列出所有的對照表,因為任意的書籍上面肯定都有相關的介紹。只是下面的這幾種你最好還是記住,因為非常有可能就在你的程序中會出現錯誤,左邊為SQL右邊為Java數據類型
Interger或INT int
NUMERIC(m,n),DECIMAL(m,n)或DEC(m,n) java.math.BigDecimal
FLOAT(n) double
REAL float
DOUBLE double
下面介紹一下java.sql.Statement的常用方法,我覺得這個挺重要的
int executeUpdate(String sql)
執行字符串中指定的INSERT,UPDATE,DELETE等SQL語句。還可以執行數據定義語言(DLL)的語句,如CREATE TABLE.返回受影響的記錄總數,如果是沒有更新計數的語句,則返回-1.本著對大家和自己負責的任務我徹底用了這個函數,在執行INSERT,UPDATE,DELETE的操作的事后返回的的確是影響的函數,一般你執行一條INSERT語句的事后返回的肯定是1,此外當你執行CREATE TABLE操作的時候返回的是0.至于等于-1的情況我還沒有遇到,等遇到的時候第一時間更新此文章。
boolean execute(String sqlStatement)
執行字符串中指定的SQL語句。如果該語句返回一個結果集則該方法返回true;反之,返回false。使用getResultSet或getUpdateCount方法可以得到語句的執行結果。
int getUpdateCount()
返回受前一條更新語句影響的記錄總數。如果前一條語句未更新數據庫,則返回-1.對于每一條執行過的語句,該方法只能被調用一次。
ResultSet getResultSet()
返回前一條查詢語句的結果集。如果前一條語句未產生結果集,則返回null值。對于每一條執行過的語句,該方法只能被調用一次。
接著簡單的介紹一下PreparedStatement的用法吧,就不描述了僅給出代碼,大家肯定都會明白的
string sql = "select * from people p where p.id = ? and p.name = ?";
PreparedStatement pStmt=conn.prepareStatement(sql);
pStmt.setint(1,id);
pStmt.setstring(2,name);
resultset rs = pStmt.executequery();
==========================================================================================
pStmt = con.prepareStatement("insert into tb_name (col1,col2,col2,col4) values (?,?,?,?)");
pStmt.setString(1,var1);
pStmt.setString(2,var2);
pStmt.setString(3,var3);
pStmt.setString(4,var4);
pStmt.executeUpdate();