`
chenzehe
  • 浏览: 538107 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JDBC 快速入门

阅读更多

一、JDBC分类

JDBC驱动程序按照工作方式分为四类:
    1、JDBC-ODBC bridge + ODBC 驱动
       JDBC-ODBC bridge桥驱动将JDBC调用翻译成ODBC调用,再由ODBC驱动翻译成访问数据库命令。
       优点:可以利用现存的ODBC数据源来访问数据库。
       缺点:从效率和安全性的角度来说的比较差。不适合用于实际项目。
    2、基于本地API的部分Java驱动
       我们应用程序通过本地协议跟数据库打交道。然后将数据库执行的结果通过驱动程序中的Java部分返回给客户端程序。
       优点:效率较高。
       缺点:安全性较差。
    3、纯Java的网络驱动
       (中间协议)            (本地协议)
       app    JDBC     纯Java                 中间服务器               DB
       缺点:两段通信,效率比较差
       优点:安全性较好
    4、纯Java本地协议:通过本地协议用纯Java直接访问数据库。
       特点:效率高,安全性好。

 

二、JDBC 编程的步骤

1、加载和注册数据库驱动Driver

1.1 使用Class.forName(driverName)自动注册,需要把驱动的jar包导进来,需处理异常,driverName为各数据库厂商驱动名,如:

String driverName = "com.mysql.jdbc.Driver";//MySQL的
String driverName = "oracle.jdbc.driver.OracleDriver";//Oracle的

 1.2 实例化具体的Driver驱动:

Driver driver = new com.mysql.jdbc.Driver();
DriverManager.registerDriver(driver); 

 这种写法一般不用,不能参数化驱动名,不够灵活,一般使用上面第一种方式。每个数据库厂商会实现Driver接口,并会调用DriverManager的静态registerDriver方法,如MySQL实现的:

	static {
		try {
			java.sql.DriverManager.registerDriver(new Driver());
		} catch (SQLException E) {
			throw new RuntimeException("Can't register driver!");
		}
	}

  2、连接数据库
        conn = DriverManager.getConnection(url, username, password);//需处理异常
        //Connection返回数据库连接,如:“com.mysql.jdbc.Connection@1ffb8dc”;连接不成功则返回 null
 3、创建Statement对象
        stmt = conn.createStatement();//需处理异常,返回其生成结果的对象
        /*为了类型安全和批量更新的效率,建议用PreparedStatement
         String sql = "insert into tableName values(?,?)"; // "?"占位符
         stmt = conn.prepareStatement(sql); */
4、操作数据库,执行SQL语句
        String sql = "select * from tableName";
        rs = stmt.executeQuery(sql); //executeQuery(sqlString) 查询 返回查询结果集
        String sql = "insert into tableName values(?,?)"; // "?"占位符
        int number = stmt.executeUpdate(sql);//更新,再返回int(更新、修改影响的条数)
        //executeUpdate(sql) 执行给定 SQL 语句,如 INSERT、UPDATE 或 DELETE 等不返回任何内容的语句
        //用PreparedStatement时,已经有语句: rs = stmt.executeQuery();
    5.处理数据(游标)

        StringBuffer sb = new StringBuffer();
        ResultSetMetaData md = rs.getMetaData(); //ResultSetMetaData可获取列的类型和属性信息
        int col = md.getColumnCount(); //获取列的数目
        while(rs.next()){ //rs.next()使游标下移一位,返回boolean,没有下一个结果则返回false
            for(int i=1; i<=col;i++){ // index(JDBC 的下标从1开始)
                sb.append(md.getColumnName(i)+"="+rs.getString(i)+"  ");
            }
            sb.append("\n");
        }
       System.out.println(sb);

    游标的初始位置在第一条记录的前面,使第一次调用next()后,刚好拿到第一个结果。
    游标的最终位置在最后一条记录的后面(结果集的前面和后面留空,真正存在)
6、释放资源,断开与数据库的连接
      先判断是否有引用资源,再释放,释放空资源会抛异常:       

		if (rs != null) {
			try {
				rs.close();
			}
			catch (Exception e) {
				e.printStackTrace();
			}
		}
		if (stmt != null) {
			try {
				stmt.close();
			}
			catch (Exception e) {
				e.printStackTrace();
			}
		}
		if (conn != null) {
			try {
				conn.close();
			}
			catch (Exception e) {
				e.printStackTrace();
			}
		}

注意顺序,要按先ResultSet结果集,后Statement,最后Connection的顺序关闭资源,因为 ResultSet需要Statement和Connection连接时才可以用的;Statement也需要Connection才可用;结束 Statement之后有可能其它的Statement还需要连接,因此不能先关闭Connection,ResultSet同理。

JDBC访问数据库例子:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class JdbcTest {
	public static void main(String[] args) {
		String driverName = "com.mysql.jdbc.Driver";
		String url = "jdbc:mysql://192.168.0.248:3306/test?characterEncoding=UTF-8";
		String username = "huisou";
		String password = "huisou";
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			Class.forName(driverName);
			con = DriverManager.getConnection(url, username, password);
			String query = "insert into student(age,name) values (?,?)";
			stmt = con.prepareStatement(query);
			stmt.setInt(1, 25);
			stmt.setString(2, "lilei");
			stmt.executeUpdate();
		}
		catch (Exception e) {
			e.printStackTrace();
		}
		finally {
			if (stmt != null)
				try {
					stmt.close();
				}
				catch (Exception e) {
					e.printStackTrace();
				}
			if (con != null)
				try {
					con.close();
				}
				catch (Exception e) {
					e.printStackTrace();
				}
		}
	}
}

 
三、java.sql和javax.sql

JDBC中包括了两个包:java.sql和javax.sql

1、java.sql 这个包中的类和接口主要针对基本的数据库编程服务,如生成连接、执行语句以及准备语句和运行批处理查询等。同时也有一些高级的处理,比如批处理更新、事务隔离和可滚动结果集等。

2、javax.sql 主要为数据库方面的高级操作提供了接口和类。如为连接管理、分布式事务和旧有的连接提供了更好的抽象,它引入了容器管理的连接池、分布式事务和行集等。

 

四、JDBC对象解释

1、Connection 数据库连接对象,与特定数据库的连接(会话),能够通过getMetaData方法获得数据库提供的信息、所支持的SQL语法、存储过程和此连接的功能等信息。

2、Driver 每个驱动程序类必需实现的接口,每个数据库驱动程序也都应该提供一个实现Driver接口的类。

3、DriverManager 工具类,管理一组JDBC驱动程序的基本服务。作为初始化的一部分,此接口会尝试加在”jdbc.drivers”系统属性中引用的驱动程序。只是一个辅助类。

4、Statement 用于执行静态SQL语句并返回其生成结果的对象,在向数据库发送相应的SQL语句时,都需要创建Statement接口或 PreparedStatement接口。在具体应用中,Statement主要用于操作不带参数(可以直接运行)的SQL语句,比如删除语句、添加或更 新。

5、PreparedStatement 继承Statement接口,表示预编译的SQL语句的对象,SQL语句被预编译并且存储在PreparedStatement对象中。使用PreparedStatement有下面三步:

 一:通过连接获得PreparedStatement对象,用带占位符(?)的sql语句构造。
            PreparedStatement  pstm = con.preparedStatement(“insert into student(age,name) values (?,?)”);
 二:设置参数
           stmt.setInt(1, 25);
           stmt.setString(2, "lilei");
三:执行sql语句
            Rs  =  pstm.excuteQuery();

       Statement发送完整的Sql语句到数据库不是直接执行而是由数据库先编译,再运行。每次都需要编译。而PreparedStatement是先发送带参数的Sql语句,由数据库先编译,再发送一组组参数值(同构时不需重复编译)。

同构:两个Sql语句可编译部分是相同的,只有参数值不同;
异构:整个sql语句的格式是不同的;
       如果是同构的sql语句,PreparedStatement的效率要比statement高。而对于异构的sql则两者效率差不多。一般都用 PreparedStatement代替Statement,因为它是类型安全的。Statement对参数类型不作检查,故不够安全。使用时注意下面几 点:

    1、使用预编译的Statement编译多条Sql语句一次执行
    2、可以跨数据库使用,编写通用程序
    3、能用预编译时尽量用预编译
    4、如果第二个SQL语句与前一个是异构的,需要再次编译“ps = con.prepareStatement(sql);“

6、CallableStatement 用来访问数据库中的存储过程,它提供了一些方法来指定语句所使用的输入/输出参数。

7、ResultSet 查询结果集接口,它对返回的结果集进行处理。

8、 ResultSetMetaData 对元数据进行操作的接口,可以实现很多高级功能,Hibernate运行数据库的操作,大部分都是通过此接口。可以认为,此接口是SQL查询语言的一种反 射机制。ResultSetMetaData接口可以通过数组的形式,遍历数据库的各个字段的属性。

       JDBC通过元数据(MetaData)来获得具体的表的相关信息,例如,可以查询数据库中有哪些表,表有哪些字段,以及字段的属性等。MetaData中通过一系列getXXX将这些信息返回给我们。

JDBC通过元数据(MetaData)来获得具体的表的相关信息,例如,可以查询数据库中有哪些表,表有哪些字段,以及字段的
       数据库元数据 Database MetaData 用connection.getMetaData()获得;包含了关于数据库整体元数据信息。
       结果集元数据 ResultSet MetaData 用resultSet.getMetaData()获得;比较重要的是获得表的列名,列数等信息。
       结果集元数据对象:ResultSetMetaData meta = rs.getMetaData();
                字段个数:meta.getColomnCount();
                字段名字:meta.getColumnName();
                字段JDBC类型:meta.getColumnType();
                字段数据库类型:meta.getColumnTypeName();
       数据库元数据对象:DatabaseMetaData dbmd = con.getMetaData();
                数据库名:dbmd.getDatabaseProductName();
                数据库版本号:dbmd.getDatabaseProductVersion();
                数据库驱动名:dbmd.getDriverName();
                数据库驱动版本号:dbmd.getDriverVersion();
                数据库Url:dbmd.getURL();
                该连接的登陆名:dbmd.getUserName();

 五、JDBC中的事务编程

    1、事务是具备以下特征(ACID)的工作单元:
        原子性(Atomicity)—— 如果因故障而中断,则所有结果均被撤消;
        一致性(Consistency)—— 事务的结果保留不变;
        孤立性(Isolation)—— 中间状态对其它事务是不可见的;
        持久性(Durability)—— 已完成的事务结果上持久的。
        原子操作,也就是不可分割的操作,必须一起成功一起失败。
     2、事务处理三步曲:(事务是一个边界)
        ① connection.setAutoCommit(false); //把自动提交关闭;在创建Statement对象之前。
        ② 正常的DB操作                       //若有一条SQL语句失败了,自动回滚
        ③ connection.commit()              //主动提交
        和 connection.rollback()            //主动回滚,一般写在catch语句里,而前三个都写在try语句里

try{
    con.setAutoCommit(false);   //step① 把自动提交关闭
    Statement stm = con.createStatement();    //step② 正常的DB操作
    stm.executeUpdate("insert into person(id, name, age) values(520, 'X-Man', 18)");
    stm.executeUpdate("insert into Person(id, name, age) values(521, 'Super', 19)");
    con.commit();               //step③ 成功主动提交
} catch(SQLException e){
    try{con.rollback();        //如果中途发生异常,则roolback;这语句也会抛异常
    }catch(Exception e){e.printStackTrace();}    //step③ 失败则主动回滚
}

      3、JDBC事务并发产生的问题和事务隔离级别
     JDBC事务并发产生的问题:
        ① 脏读(Dirty Reads) 一个事务读取了另一个并行事务还未提交的数据。(产生原因:读-写)
        ② 不可重复读(UnPrpeatable Read)一个事务前后两次读取数据时,得到的数据不一致,被另一个已提交的事务修改。
        ③ 幻读(Phantom Read) 一个事务再次查询,记录中的量变化了。(仅对统计有影响)
     为了避免以上三种情况的出现,则采用事务隔离级别:
        TRANSACTION_NONE                不使用事务(不可能用,只是理论的)
        TRANSACTION_READ_UNCOMMITTED    可以读取未提交数据(允许脏读,也不可能)
        TRANSACTION_READ_COMMITTED      只读提交的数据:可防止脏读;大部分数据库的默认隔离级别
        TRANSACTION_REPEATABLE_READ     重复读取;只可以避免脏读
        TRANSACTION_SERIALIZABLE        事务串行化:可以避免脏读,重复读取和幻读,但会降低数据库效率(最常用)
     以上的五个事务隔离级别都是在Connection类中定义的静态常量。隔离级别越高,数据越安全,并发能力越差。
     使用setTransactionIsolation(int level) 方法可以设置事务隔离级别。
     比如:con.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);

 

六、Scrollability 结果集可滚动

        可双向支持绝对与相对滚动,对结果集可进行多次迭代。
        Con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
        //上句的 SCROLL 再到 CONCUR;不可以写反,编译器无法检测到,因为他们都是int类型的。
        TYPE_FORWARD_ONLY:(单向,一般不用)该常量指示指针只能向前移动的 ResultSet 对象的类型。
        TYPE_SCROOL_INSENSITIVE:(双向、不敏感)可滚动但不受其他更改影响的 ResultSet 对象的类型。
        TYPE_SCROLL_SENSITIVE:(双向、敏感)该常量指示可滚动并且通常受其他的更改影响的 ResultSet 对象的类型。
        CONCUR_READ_ONLY:(只读)该常量指示只可以读取的 ResultSet 对象的并发模式。
        CONCUR_UPDATABLE:(可更新)该常量指示可以更新的 ResultSet 对象的并发模式。
        绝对定位:boolean absolute(int row)将游标移动到指定位置。(row指记录的序号,没有这位置则返回false)
                void afterLast() 将游标指向最后一条记录的后一位(有这位置,但记录为空)。
                void beforeFirst()将游标指向最前一条记录的前一位。
                boolean first()将游标移动到结果集最前。
                boolean last()将游标移动到结果集末尾。
        相对定位:boolean next()指向下一个。
                boolean previous()指向前一个。
                boolean relative(int) 向next()方向移动 int 位(int 可负)。
        判位函数:boolean isAfterLast() 是否在最后一条的后一位。
                boolean isBeforeFirst() 是否最前一条记录的前一位。
                boolean isFirst() 是否最前位置。
                boolean isLast() 是否最后位置。

 七、Updatability结果集可更新

        rs.updateString(“name”,”Tony”);//前面一个是字段的名字或者序号
        rs.updateInt(1,”122323”);修改
        rs.deleteRow();删除
        rs.updateRow();

        只有在必要的时候(如桌面应用)才用结果集更新数据库,因为使用结果集更新数据库效率低下。可更新结果集还要看数据库驱动程序是否支持,如Oracle就 支持,MySql不支持。并且只能针对一张表做结果集更新(不能子查询),而且不能有join操作,必须有主健,必须把所有非空没有默认值的字段查出,处 理可更新结果集时不能用select *来查询语句,必须指出具体要查询的字段,不能使用通配符。

 

 八、Batch updates 批量更新

 将多组对数据库的更新操作发送到数据库统一执行(数据库支持并发执行操作),以提高效率。主要是通过减少数据(Sql语句或参数)在网络上传输的次数来节省时间。

1、对于Statement的批量更新处理:
            stm.addBatch(Sql);
            int[] ResultSet=stm.executeBatch();

2、对于PreparedStatement的批量更新处理

             pstm.setInt(1,12);pstm.setString(2,”gaga”);
             pstm.addBatch();
             int[] ResultSet=pstm.executeBatch();

       int[] 中每一个数表示该Sql语句影响到的记录条数,PreparedStatement的更新操作比Statement的更新操作多了一个设置参数的过程。

 

 九、JNDI 命名目录服务器

JNDI(Java Naming and Directory Interface)是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。 JNDI的方法是在javax.naming包下,接口是Context实现类是InitialContext,是Java的命名目录服务器。而JDBC 是Java的数据库访问接口。

        bind(String name, Object obj) 将名称绑定到对象资源,建立指定的字符串和对象资源的关联
        lookup(String name) ,通过指定的字符串获得先前绑定的资源
JNDI与JDBC:
JNDI提供了一种统一的方式,可以用在网络上查找和访问服务。通过指定一个资源名称,该名称对应于数据库或命名服务中的一个纪录,同时返回数据库连接建立所必须的信息。
代码示例:

		try {
			Context cntxt = new InitialContext();
			DataSource ds = (DataSource) cntxt.lookup("jdbc/dpt");
		}
		catch (NamingException ne) {
			...
		}

 

 十、DataSourse 数据源

 

package javax.sql;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Wrapper;
public interface DataSource  extends CommonDataSource,Wrapper {
    Connection getConnection() throws SQLException; 
    Connection getConnection(String username, String password) throws SQLException;
}
 用于提供到此 DataSource 对象所表示的物理数据源的连接。作为 DriverManager 工具的替代项,DataSource 对象是获取连接的首选方法。实现 DataSource 接口的对象通常在基于 JavaTM Naming and Directory Interface (JNDI) API 的命名服务中注册。

 

<!-- Generated by javadoc (build 1.6.0-beta2) on Mon Mar 19 18:32:23 CST 2007 -->

<noscript></noscript>

DataSource 接口由驱动程序供应商实现。共有三种类型的实现:

    1. 基本实现 - 生成标准的 Connection 对象
    2. 连接池实现 - 生成自动参与连接池的 Connection 对象。此实现与中间层连接池管理器一起使用。
    3. 分布式事务实现 - 生成一个
Connection
      <!-- Generated by javadoc (build 1.6.0-beta2) on Mon Mar 19 18:32:23 CST 2007 -->
<noscript></noscript>
    对象,该对象可用于分布式事务,大多数情况下总是参与连接池。此实现与中间层事务管理器一起使用,大多数情况下总是与连接池管理器一起使用。

<!-- Generated by javadoc (build 1.6.0-beta2) on Mon Mar 19 18:32:23 CST 2007 -->

<noscript></noscript>

通过 DataSource 对象访问的驱动程序本身不会向 DriverManager 注册。通过查找操作获取 DataSource 对象,然后使用该对象创建 Connection 对象。使用基本的实现,通过 DataSource 对象获取的连接与通过 DriverManager 设施获取的连接相同。

        

1、包含了连接数据库所需的信息,可以通过数据源获得数据库连接,有时由于某些连接数据库的信息会变更,所以经常使用包含数据库连接信息的数据源。
        2、一个标准的数据库连接工厂,作为DriverManager的替代项,保存与数据库相关的信息, 可以将数据库的连接信息放在一个共享的空间进行提取,不用在本地安装。
           支持JNDI的绑定,支持连接池,支持分布式服务,用getConnection方法可获得与数据库的连接。 数据源应该由管理员创建(目的是为了保证数据库的安全)。所以数据源对象一般放在JNDI服务器中。

通过JNDI获得绑定的资源:

	public static Object lookup(String context) throws NamingException {
		Properties pro = new Properties();
		// Weblogic的JNDI服务器参数
		pro.put(InitialContext.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
		pro.put(InitialContext.PROVIDER_URL, "t3://localhost:7001");
		Context ctx = new InitialContext(pro);
		return ctx.lookup(context);// 查找;通过指定的字符串获得先前绑定的资源。
	}

 

 十一、连接池

在内存中用来保存一个个数据库连接的对象。
        访问数据库时,建立连接和拆连接需要花费较长时间,通过以连接池直连的方式获取连接,不需要注册驱动程序,可以大量的节省销毁和创建连接的资源消耗,提高 访问数据库的效率。通过连接池获得的Connection,当执行con.close()时,不是关闭连接,而是表示将连接释放回连接池。
         连接池是一个很复杂的算法,常见的连接池有C3P0、DBCP、BoneCP、Druid等。

 

十二、分布式的事务管理器JTA(Java Transaction API)

      分布式事务是通过多个异地数据库执行一组相关的操作,要保证原子操作的不可分,也不用再自己写commit,和rollback,全部都交给中间服务器(TM)来处理。

      如果计划用JTA 界定事务,那么就需要有一个实现 javax.sql.XADataSource 、 javax.sql.XAConnection 和
javax.sql.XAResource 接口的 JDBC 驱动程序。一个实现了这些接口的驱动程序将可以参与 JTA 事务。一个
XADataSource 对象就是一个 XAConnection 对象的工厂。 XAConnection s 是参与 JTA 事务的 JDBC 连接。

 

 

分享到:
评论

相关推荐

    jdbc快速入门.pdf

    在快速入门JDBC时,通常遵循以下步骤: 1. **导入驱动JAR包**:首先需要引入对应数据库的JDBC驱动包,例如MySQL数据库的驱动包`mysql-connector-java-5.1.37-bin.jar`。 2. **注册驱动**:使用`Class.forName()`...

    《-JDBC快速入门-》

    JDBC快速入门 本篇文章将带您快速入门JDBC,掌握JDBC的CRUD操作,理解JDBC中各个对象的作用,并掌握Druid的使用。 JDBC概述: JDBC(Java DataBase Connectivity)是使用Java语言操作关系型数据库的一套API,全称...

    JDBC快速入门相关笔记

    JDBC 概念 java数据库连接,java语言操作数据库 使用统一的一套JAVA代码可以操作所有关系型数据库JDBC定义了一套所有关系型数据库的规则 每一种数据库 厂商都会提供自己的JDBC实现类 实现类:数据库驱动 本质 :由...

    muxin-4#muxin-note#01、JDBC快速入门1

    我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动 jar 包中的实现类什么是实现类Person 接口 Worker 类 Person p = new

    presto_jdbc

    以下是一个Presto JDBC快速入门的详细指南。 1. **安装Presto JDBC驱动** 要使用Presto JDBC,首先需要在项目中添加Presto JDBC驱动的依赖。如果你使用的是Maven,可以在`pom.xml`文件中添加以下依赖: ```xml ...

    ShardingSphere 5.1.2版 开发者手册 中文版

    3.1 ShardingSphere-JDBC快速入门 ShardingSphere-JDBC 快速入门指南提供了基本的使用步骤和配置指南,帮助开发者快速开始使用 ShardingSphere-JDBC。 3.2 ShardingSphere-Proxy快速入门 ShardingSphere-Proxy ...

    JDBC概述+快速入门+API详解+数据库连接池

    JDBC概述+快速入门+API详解+数据库连接池

    中文-Apache ShardingSphere document.pdf

    8. **ShardingSphere-JDBC快速入门**:这部分涵盖了添加Maven依赖、配置分片规则、创建数据源等步骤,帮助用户快速在Java应用中集成ShardingSphere-JDBC。 9. **ShardingSphere-Proxy快速入门**:包括规则配置、...

    SpringJDBC入门Demo

    Spring JDBC是Spring框架的一部分,它提供了一种抽象层,简化了Java数据库编程。...通过这个入门Demo,你可以快速掌握Spring JDBC的基本用法,并将其应用于实际项目中,提升数据库操作的效率和质量。

    JDBC入门中文文档

    **JDBC(Java Database Connectivity)**是Java...这个“JDBC入门中文文档”将详细介绍这些概念,帮助初学者快速掌握JDBC的基本用法和最佳实践。通过深入学习和实践,你将能够利用JDBC实现高效、可靠的数据库应用程序。

    jsp+servlet+jdbc注册登录入门项目

    本项目是一个基于JSP、Servlet和JDBC技术的简单注册登录系统,旨在帮助初学者快速理解和掌握这些核心技术在实际开发中的应用。在这个项目中,开发者将使用MySQL作为后端数据库,创建一个名为`test`的数据库,并在...

    JAVA数据库接口JDBC入门基础讲座

    本讲座主要针对JDBC的基础知识进行讲解,帮助初学者快速入门。 首先,我们需要理解JDBC的角色。JDBC是Java平台的标准,由Sun Microsystems(现为Oracle公司)制定,允许Java程序通过Java API与各种关系型数据库进行...

    iBATIS教程之快速入门浅析

    在快速入门iBATIS的过程中,首先要理解其基本概念。iBATIS通过XML配置文件来定义SQL语句与Java对象之间的映射关系。这样,开发者可以在XML中编写SQL,而在Java代码中直接操作对象,从而实现对数据库的CRUD(Create、...

    ireport快速入门指南.pdf

    标题:“ireport快速入门指南.pdf”为我们提供了一个关于JasperReports工具的入门级教程,特别是针对iReport这个可视化的报表设计工具。该指南旨在帮助初学者快速掌握iReport的使用,并通过实例加深理解。 描述:...

    DB2 Express-C快速入门

    本快速入门指南将帮助读者迅速掌握DB2 Express-C的基本概念、安装步骤以及如何进行基本操作。 首先,我们来了解DB2的核心特性。DB2支持SQL标准,包括SQL:2003,提供了丰富的数据类型,如数值、字符串、日期/时间、...

    Mysql快速入门资料

    这份"Mysql快速入门资料"针对初学者提供了全面的MySQL学习路径。在Java编程中,掌握MySQL是必要的,因为它允许开发者存储、管理和检索应用程序数据。 一、MySQL简介 MySQL是一个高性能、可扩展的SQL数据库,支持...

    Dorado 5 快速入门

    这个快速入门指南主要面向开发者,帮助他们迅速掌握Dorado 5的基本操作和功能。 1. 前言: 在前言部分,通常会介绍Dorado 5开发工具的背景、目标以及它在RIAs开发中的重要性。可能会提到其设计理念,如提升用户体验...

    JSP快速入门教程

    ### JSP快速入门教程知识点详解 #### 一、JSP与Java的关系及JavaEE框架 JSP(Java Server Pages)是Java平台的一部分,主要用于构建动态网页。它属于JavaEE(Java Platform, Enterprise Edition)框架的一个组件,...

    Hibernate快速入门教程

    【Hibernate快速入门教程】 在Java开发中,Hibernate是一个非常重要的框架,它实现了对象关系映射(ORM)技术,使得开发者可以使用面向对象的方式来操作数据库,极大地简化了数据访问层的编程工作。本教程针对初学...

    java jdbc入门教程笔记

    以下是一些关于JDBC入门的关键知识点: 1. **注册驱动**: 在JDBC中,注册驱动是为了使Java应用程序能够识别并连接到特定的数据库。通常有两种方法: - 使用`Class.forName()`方法,例如`Class.forName(...

Global site tag (gtag.js) - Google Analytics