摘要:Java 連資料庫
Java Connection example1
//mssql範列展現了如何連結資料庫,提取資料的方法,可以參考
import java.sql.*;
class mssql {
public static void main(String[] args) {
//設定jdbc連結字串,請依你的SQL Server設定值修改
String conUrl = "jdbc:sqlserver://localhost:1433;databaseName=testdb;user=sa;password=sa;"; //for jdbc 2.0
Connection con = null;
try {
//註冊JODBC類
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(conUrl);
//SQL語句
String SQL = "SELECT Top 10 * FROM movie_data";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(SQL);
//循環搜尋結果,請依你的資料庫來作提取資料欄位,以將下面的資料欄位對映你的資料欄位
while (rs.next()) {
System.out.println(rs.getString("name") + ", " + rs.getString("Source"));
}
rs.close();
stmt.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
spring-jdbc 存取資料庫
JDBCDataSource dataSource = new JDBCDataSource();
dataSource.setUrl("jdbc:hsqldb:file:src/main/resources/db/dvd_library");
dataSource.setUser("codedata");
dataSource.setPassword("123456");
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update("INSERT INTO directors(name) values(?)", "codedata");
如果查詢回來的資料對應於 JVM 中的某個物件,可以使用 queryForObject 方法。例如:
jdbcTemplate.queryForObject(
"SELECT COUNT(*) FROM directors WHERE name=?",
new Object[] {"codedata"}, Integer.class)
如果查詢結果不只一筆,可使用 queryForList 方法,這會傳回一個 List,當中每個元素都是Map:
List<Map<String, Object>> results =
(List<Map<String, Object>>) jdbcTemplate.queryForList(
"SELECT * FROM directors WHERE name=?", "codedata");
Map 中的鍵就是欄位名稱,而值的部份就是欄位值,一個取得所有查詢資料的例子像是:
for(Map<String, Object> result : results) {
String title = (String) result.get("title");
Integer age = (Integer) result.get("age");
...
}
如果想要 List 直接是封裝過後的資料物件,可以使用 RowMapper,進行簡單的物件封裝。例如:
List<Dvd> dvds = jdbcTemplate.query(
"SELECT dvds.title, dvds.year, dvds.duration, "
+ "directors.name FROM dvds, directors "
+ "WHERE dvds.director_id = directors.id"
+ " ORDER BY dvds.title",
new RowMapper<Dvd>() {
@Override
public Dvd mapRow(ResultSet rs, int rowNum) throws SQLException {
return new Dvd(
rs.getString("title"),
rs.getInt("year"),
rs.getInt("duration"),
rs.getString("name")
);
}
});