`
文章列表
当用于显示一张表或查询结果的可视化数据显示时,ResultSet类中的next方法无法满足在结果集上前后移动。 6.1 可滚动的结果集 Statment : Statment stmt = conn.createStatment(type, concurrency); PreparedStatement : PreparedStatement prepStmt = conn.prepareStatement(command, type, concurrency);                   ResultSet的type值 TYPE_FORWARD_ONLY          ...
五. 执行查询操作 5.1 预备语句 预备语句(prepared statement) : 一个带有宿主变量的查询语句,每次查询的时候时只需要为该变量填入不同的字符串就可以反复多次地使用该语句。 在PreparedStatement预备语句中,每个宿主变量都用“?”来表示。如果存在一个以上的变量,那么在设置变量值时必须注意"?"的位置。 e.g.    String publishQuery = "SELECT * FROM table WHERE name=?" PreparedStatement publishQueryStat = c ...
(1)在执行SQL命令之前,需要创建一个Statement对象。要创建Statement对象,需要使用DriverManager.getConnection方法所获得的Connection对象。 e.g.Statements stmt = conn.createStatement(); (2)将要执行的SQL语句放入字符串中 e.g.    String command = "UPDATE Books SET price = price - 5.00 WHERE title NOT LIKE '%introduction%' "             (3)调用 ...
3.1 数据库URL 在连接数据库时必须使用各种与数据库类型相关的参数,比如主机名、端口号和数据库名。JDBC使用了一种与普通URL相类似的语法来描述数据源。 e.g. 常用数据库URL Derby:  jdbc:derby://localhost:1527/COREJAVA;create=true ...
JDBC通过SQL与数据库进行通信 : 将JDBC包看做是一个用于将SQL语句传递给数据库的应用编程接口(API)。 简单介绍SQL 可以将数据库想象成一组由行和列组成的表格。 SELECT (1)SQL关键字全部使用大写字母(惯例,也可以不这样做) (2)在每一个SQL的SELECT语句中,FROM子句都是必不可少的。 (3)可以选择所需要的字段。 (4)可以在查询语句中使用WHERE子句来限定所要选择的行。 (5)SQL使用=(相等)和<>(不等)而非==和!=来进行相等比较。 (6)WHERE子句可以使用LIKE操作符来实现模式匹配,其中%表示0或0以上个字符 ...
1.JDBC驱动程序类型 JDBC基于的思想(同ODBC) : 根据API编写的程序都可以与驱动管理器进行通信,而驱动管理器则通过驱动程序于实际数据库进行通信。 JDBC实现目标: (1)通过使用SQL语句,甚至是专有的SQL扩展,程序员可以利用Java语言开发访问数据库的应用。需要说明,扩展SQL仍然需要遵守Java语言的相关约定。 (2)数据库提供商和数据库工具开发商可以提供底层的驱动程序。因此,他们有能力优化各自数据库产品的驱动程序。 JDBC到数据库的通信路径: (1)Java应用程序通过JDBC API于JDBC驱动管理器进行通信 (2)JDBC驱动管理器或通过JDBC/ ...
java.lang.Runnable 接口 void run() 必须重写这个方法,并在这个方法中提供所要执行的任务。 java.lang.Thread 类,该类实现了Runnable接口 构造 Thread(Runnable target) 构造一个新线程,用于调用给定target的run()方法 方法 1.启动和中断 ...
java.util.concurrent包中包含了几个能帮助人们互相合作的线程集的类。这些这些机制具有为线程之间的 共用结点模式(common rendezvos patterns)提供的“预置功能”。 如果有一个相互合作的线程集满足这些行为模式之一,那么应该直接 ...
线程池: 1.使用线程池(Thread Pool)的前提是,程序中创建了大量的生命周期很短的线程。构建一个新的线程是有一定代价的,因为涉及与操作系统的交互。 2.另一个使用线程池的理由是减少并发线程的数目。创建大量线程会大大 ...
Callable是一个参数化的类型,只有一个方法call。 public interface Callable<V>{     V call() throw Exception; } Future保存异步计算的结果,可以启动一个计算,将Future对象交给某个线程,然后忘掉它。Future对象的所有者在结果计算好之后就可以获得他。 public interface Future<V> {     boolean cancel(boolean mayInterruptIfRunning);     boolean isCancelled();     boo ...
如果多线程要并发的修改一个数据结构,例如散列表,那么很容易破坏这个数据结构。可以通过锁来保护共享数据结构,但是选择线程安全的实现作为替代可能更容易些。 1.高效的映像、集合和队列 java.util.concurrent包提供了映 ...
阻塞队列(BlockingQueue) 对于许多线程问题,可以通过使用一个或多个队列以优雅且安全的方式将其形式化。 例如:生产者线程向队列插入元素,消费者线程则取出它们。 在协调多个线程之间的合作时,阻塞队列是一个有用 ...
多数实际的多线程应用中,两个或两个以上的线程需要共享同一数据的存取。 1.竞争条件的一个例子 public class Bank { private final double[] accounts; public Bank(int n, double initialBalance) { accounts = new double[n]; for (int i = 0; i < accounts.length; i++) { accounts[i] = initialBalance; } } public void transfer( ...
线程属性包括:线程优先级、守护线程、线程组和处理未捕获异常的处理器。 1.线程优先级 在Java程序设计语言中,每一个线程都有一个优先级。默认情况下,一个线程继承它的父线程的优先级。可以将优先级设置为MIN_PRIORITY(在Thread类中定义为1)与MAX_PRIORITY(定义为10)之间的任何值。 每当线程调度器有机会选择新线程时,它首先选择有较高优先级的线程。 注意: (1)线程优先级是高度依赖于系统的。当虚拟机依赖于宿主机平台的线程实现机制时,JAVA的优先级被映射到宿主机平台的优先级上,优先级个数也许更多,也许更少。Windows有7个优先级别。Linux下 ...
1.新生线程 当new一个线程时,如new Thread(r),该线程的状态是new。当一个线程处于新生状态时,程序还有没有开始运行线程中的代码。在线程运行之前还有一些簿记工作要做。 2.可运行线程 调用start()方法,线程处于runnable ...
Global site tag (gtag.js) - Google Analytics