1. JDBC操作Access資料庫
http://www.blogjava.net/pixysoft/archive/2007/09/09/143731.html
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=demo.mdb";
Connection con = DriverManager.getConnection(database, "", "");
Statement s = con.createStatement();
s.execute("select ID,NAME,MEMO from DEMO where ID=" + id);
ResultSet rs = s.getResultSet();
if (rs != null)
{
while (rs.next())
{
byte[] image = rs.getBytes(3);
memo = new String(image, "gb2312");
}
}
s.close();
con.close();
2. JDBC系統入門教程:
http://java.sun.com/docs/books/tutorial/jdbc/overview/index.html
http://java.sun.com/docs/books/tutorial/jdbc/basics/transactions.html
使用事務。
When a connection is created, it is in auto-commit mode.
con.setAutoCommit(false);
con.setAutoCommit(false);PreparedStatement updateSales = con.prepareStatement( "UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ?");updateSales.setInt(1, 50);updateSales.setString(2, "Colombian");updateSales.executeUpdate();PreparedStatement updateTotal = con.prepareStatement( "UPDATE COFFEES SET TOTAL = TOTAL + ? WHERE COF_NAME LIKE ?");updateTotal.setInt(1, 50);updateTotal.setString(2, "Colombian");updateTotal.executeUpdate();con.commit();
con.setAutoCommit(true);
http://www.360doc.com/content/06/1118/14/14474_264128.shtml
http://java.chinaitlab.com/JDBCJDO/734413.html
一種簡單JDBC串連池的實現(一)
每申請一個串連(Connection)會在物理網路(如 TCP/IP網路)上建立一個用於通訊的串連,在此串連上還可以申請一定數量的Statement.
http://java.chinaitlab.com/JDBCJDO/734416.html
一種簡單JDBC串連池的實現(二)
http://www.cnblogs.com/pony/archive/2008/11/17/1335227.html
java 擷取表結構
DatabaseMetaData dbmd = con.getMetaData();
rs = dbmd.getColumns(con.getCatalog(), schema, tableName, null);
rs.getString(DATA_TYPE) java.sql.Types 的 SQL 類型
rs.getString(COLUMN_SIZE) 列的大小。對於 char 或 date 類型,列的大小是最大字元數,對於 numeric 和 decimal 類型,列的大小就是精度。
rs.getString(DECIMAL_DIGITS) 小數部分的位元
2. 下面就是擷取表的資訊。
m_DBMetaData = m_Connection.getMetaData();
ResultSet tableRet = m_DBMetaData.getTables(null, "%",m_TableName,new String[]{"TABLE"});
3. 提取表的名字。
while(tableRet.next) System.out.println(tableRet.getString("TABLE_NAME"));
通過getString("TABLE_NAME"),就可以擷取表的名字了。
從這裡可以看出,前面通過getTables的介面的返回,JDBC是將其所有的結果,儲存在一個類似table的記憶體結構中,而其中TABLE_NAME這個名字的欄位就是每個表的名字。
4. 提取表內的欄位的名字和類型
String columnName;
String columnType;
ResultSet colRet = m_DBMetaData.getColumns(null,"%", m_TableName,"%");
while(colRet.next()) {
columnName = colRet.getString("COLUMN_NAME");
columnType = colRet.getString("TYPE_NAME");
int datasize = colRet.getInt("COLUMN_SIZE");
int digits = colRet.getInt("DECIMAL_DIGITS");
int nullable = colRet.getInt("NULLABLE");
System.out.println(columnName+" "+columnType+" "+datasize+" "+digits+" "+
nullable);
}
JDBC裡面通過getColumns的介面,實現對欄位的查詢。跟getTables一樣,"%"表示所有任意的(欄位),而m_TableName就是資料表的名字。
http://blog.csdn.net/alihoo/archive/2008/06/23/2578252.aspx
ResultSet pkRSet = dbMeta.getPrimaryKeys(null, null, "Comment");
while( pkRSet.next() ) {
System.err.println("****** Comment ******");
System.err.println("TABLE_CAT : "+pkRSet.getObject(1));
System.err.println("TABLE_SCHEM: "+pkRSet.getObject(2));
System.err.println("TABLE_NAME : "+pkRSet.getObject(3));
System.err.println("COLUMN_NAME: "+pkRSet.getObject(4));
System.err.println("KEY_SEQ : "+pkRSet.getObject(5));
System.err.println("PK_NAME : "+pkRSet.getObject(6));
System.err.println("****** ******* ******");
}