java JDBC 学习

本文介绍了如何使用JDBC操作Access数据库的方法,包括连接数据库、执行查询、获取结果集等步骤,并提供了获取表结构、字段名和类型的示例代码。此外,还展示了如何通过JDBC进行事务处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.youkuaiyun.com/alihoo/archive/2008/06/23/2578252.aspx

ResultSet pkRSet = dbMeta.getPrimaryKeys(nullnull, "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("****** ******* ******"); 

  }  

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值