- 浏览: 684218 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (297)
- J2SE (78)
- swt/飞信 (20)
- mysql/mssql (17)
- 设计模式 (5)
- windows (18)
- 闲言碎语 (19)
- struts 1.x (6)
- JVM (6)
- tomcat/jetty (8)
- jquery/javascript (15)
- web前端 (6)
- J2EE (0)
- PHP (6)
- 算法设计 (17)
- 数据结构 (3)
- C/C++ (6)
- linux (19)
- 程序打包 (8)
- eclipse/myeclipse (10)
- 其他杂项 (13)
- 应聘 (9)
- spring/spring mvc (4)
- Maven/Ant (2)
- ERROR (1)
- nosql/hbase (1)
- hibernate (3)
- Solr/Lucene (1)
最新评论
-
乔木1937:
太感谢了,看到你的文章终于解决这个问题了!
[转载]通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。 -
xianweisi:
竟然还有马
精简JRE - 实例Swing计算器 with 精简JRE(续) -
Javkburd:
我刚也遇到这个问题,然后也把默认端口改成了1433,只差最后没 ...
[转载]通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。 -
yeshaoting:
kingbinchow 写道 最近的爪哇岛 没有什么货进项呀 ...
jQuery方法区别(四)click() bind() live() delegate()区别 -
kingbinchow:
最近的爪哇岛 没有什么货进项呀!
jQuery方法区别(四)click() bind() live() delegate()区别
1. JDBC方式 - 连接数据库
一般步骤:
1.1 加载驱动
每个驱动程序类必须实现的接口。 Java SQL 框架允许多个数据库驱动程序。每个驱动程序都应该提供一个实现 Driver 接口的类。 DriverManager 会试着加载尽可能多的它可以找到的驱动程序,然后,对于任何给定连接请求,它会让每个驱动程序依次试着连接到目标 URL。
强烈建议每个 Driver 类应该是小型的并且是单独的,这样就可以在不必引入大量支持代码的情况下加载和查询 Driver 类。 在加载某一 Driver 类时,它应该创建自己的实例并向 DriverManager 注册该实例。这意味着用户可以通过调用以下程序加载和注册一个驱动程序 Class.forName("com.mysql.jdbc.Driver")
e.g.
Class.forName("com.mysql.jdbc.Driver");
1.2 建立数据库连接
管理一组 JDBC 驱动程序的基本服务。
作为初始化的一部分,DriverManager 类会尝试加载在 "jdbc.drivers" 系统属性中引用的驱动程序类。这允许用户自定义由他们的应用程序使用的 JDBC Driver。例如:
a) 在 ~/.hotjava/properties 文件中,用户可以指定:jdbc.drivers=foo.bah.Driver:wombat.sql.Driver:bad.taste.ourDriver
b) 程序还可以在任意时间显式地加载 JDBC 驱动程序:Class.forName("com.mysql.jdbc.Driver");
注:DataSource 接口是 JDBC 2.0 API 中的新增内容,它提供了连接到数据源的另一种方法。使用 DataSource 对象是连接到数据源的首选方法。
e.g.
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/addressbook", "root", "root");
1.3 创建一个 Statement 对象来将 SQL 语句发送到数据库
用于执行静态 SQL 语句并返回它所生成结果的对象。
在默认情况下,同一时间每个 Statement 对象在只能打开一个 ResultSet 对象。因此,如果读取一个 ResultSet 对象与读取另一个交叉,则这两个对象必须是由不同的 Statement 对象生成的。如果存在某个语句的打开的当前 ResultSet 对象,则 Statement 接口中的所有执行方法都会隐式关闭它。
相关语法:
Statement createStatement(int resultSetType,
int resultSetConcurrency,
int resultSetHoldability)
throws SQLException
创建一个 Statement 对象,该对象将生成具有给定类型、并发性和可保存性的 ResultSet 对象。此方法与默认无参 createStatement 方法相同,但它允许重写默认结果集类型、并发性和可保存性。
参数:
resultSetType - 以下 ResultSet 常量之一:ResultSet.TYPE_FORWARD_ONLY、ResultSet.TYPE_SCROLL_INSENSITIVE 或 ResultSet.TYPE_SCROLL_SENSITIVE
resultSetConcurrency - 以下 ResultSet 常量之一:ResultSet.CONCUR_READ_ONLY 或 ResultSet.CONCUR_UPDATABLE
resultSetHoldability - 以下 ResultSet 常量之一:ResultSet.HOLD_CURSORS_OVER_COMMIT 或 ResultSet.CLOSE_CURSORS_AT_COMMIT
e.g.
Statement stmt = conn.createStatement();
1.4 执行数据库操作
java.sql.Statement类中的成员方法:
ResultSet executeQuery(String sql)
执行给定的 SQL 语句,该语句返回单个 ResultSet 对象。
int executeUpdate(String sql)
执行给定 SQL 语句,该语句可能为 INSERT、UPDATE 或 DELETE 语句,或者不返回任何内容的 SQL 语句(如 SQL DDL 语句)。
e.g.
ResultSet rs = stmt.executeQuery("select * from user;");
if(rs.next())
System.out.println(rs.getString("username") + "\t" + rs.getString("password"));
1.5 释放数据库连接资源(有先后顺序)
e.g.
rs.close();
stmt.close();
conn.close();
完整数据库连接代码:
e.g.
/**
* Copyright (c) 2011 Trusted Software and Mobile Computing(TSMC)
* All right reserved.
*
* Created on Aug 1, 2011 4:38:46 PM
* http://jarg.iteye.com/
* Author: Jarg Yee <yeshaoting@gmail.com>
*/
package com.iteye.jarg.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* TODO JDBC方式 - 基本数据库工具类
*/
public class DBUtil
{
private String driverClassName = "com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/addressbook";
private String username = "root";
private String password = "root";
private Connection conn = null;
private Statement stmt = null;
private ResultSet rs = null;
/**
* 初始化数据库配置信息
* */
public DBUtil()
{
build();
}
/**
* 建立数据库连接
* */
public void build()
{
try
{
Class.forName(driverClassName);
conn = DriverManager.getConnection(url, username, password);
stmt = conn.createStatement();
}
catch (ClassNotFoundException e)
{
System.out.println("建立数据库连接出错\n" + e.getMessage());
this.closeConnection();
System.exit(0);
}
catch (SQLException e)
{
System.out.println("建立数据库连接出错\n" + e.getMessage());
this.closeConnection();
System.exit(0);
}
}
/**
* 数据库查询
* */
public ResultSet executeQuery(String sql)
{
try
{
rs = stmt.executeQuery(sql);
}
catch (SQLException e)
{
System.out.println("数据查询出错\n" + e.getMessage());
return null;
}
return rs;
}
/**
* 数据库更新
* */
public int executeUpdate(String sql)
{
int count = 0;
try
{
count = stmt.executeUpdate(sql);
}
catch (SQLException e)
{
System.out.println("数据库更新出错\n" + e.getMessage());
return 0;
}
return count;
}
/**
* 释放数据库连接资源
* */
private void closeConnection()
{
try
{
if(conn != null && !conn.isClosed())
{
conn.close();
}
}
catch (SQLException e)
{
System.out.println("释放数据库连接资源出错\n" + e.getMessage());
}
}
/**
* 释放SQL语句声明资源
* */
private void closeStatement()
{
try
{
if(stmt != null && !stmt.isClosed())
{
stmt.close();
}
}
catch (SQLException e)
{
System.out.println("释放SQL语句声明资源出错\n" + e.getMessage());
}
}
/**
* 释放结果集资源
* */
private void closeResultSet()
{
try
{
if(rs != null && !rs.isClosed())
{
rs.close();
}
}
catch (SQLException e)
{
System.out.println("释放结果集资源出错\n" + e.getMessage());
}
}
/**
* 释放数据库资源
* */
public void close()
{
this.closeResultSet();
this.closeStatement();
this.closeConnection();
}
/**
* for debugging.
* */
public static void main(String[] args) throws Exception
{
DBUtil db = new DBUtil();
String username = "ye";
String password = "ye";
String sql = "select * from user where username = '" + username + "' and password = '" + password + "';";
ResultSet rs = db.executeQuery(sql);
if(rs.next())
System.out.println(rs.getString("username") + "\t" + rs.getString("password"));
db.close();
}
}
发表评论
-
Java - Convert String to enum
2012-11-17 22:03 1907http://stackoverflow.com/que ... -
[ERROR]Premature end of file
2012-09-28 11:41 3326[ERROR]Premature end of file ... -
测试java.util.Map.Entry
2012-07-18 16:13 1015/** * Copyright (c) 201 ... -
关于eclipse启动出错问题的解决办法
2012-06-09 09:31 1475转自:http://blog.csdn.net/jkpt ... -
Myeclipse中把java代码导成UML类图
2012-05-18 14:53 2366MyEclipse 中选择window,在 Open ... -
[转载]java synchronized详解
2012-05-15 17:18 865http://www.cnblogs.com ... -
[转载]Java 根据 HashMap 的 value 进行排序
2012-05-08 09:58 947转载:http://www.oschina.net/co ... -
JAVA实时屏幕监控
2012-04-29 16:13 3314JAVA实时屏幕监控 说明: 本程序会运 ... -
[JAVA实时屏幕监控]JAVA使用Internet代理设置
2012-04-29 14:50 1381JAVA使用Internet代理设置 描述:首先 ... -
[JAVA实时屏幕监控]JAVA通过注册表获取Internet代理设置
2012-04-29 14:47 2333JAVA通过注册表获取Internet代理设置 ... -
[JAVA实时屏幕监控]JAVA发送邮件
2012-04-29 14:28 2497JAVA发送邮件 描述:利用commons-em ... -
[JAVA实时屏幕监控]JAVA屏幕截图
2012-04-29 14:19 1312JAVA屏幕截图 /** * 产生截图 ... -
[JAVA实时屏幕监控]Java使用代理服务器
2012-04-24 13:36 2485/** * Copyright (c) 2012 T ... -
java.util.ConcurrentModificationException解决办法
2012-04-23 10:47 1574java.util.ConcurrentModi ... -
[转载]java.util.ConcurrentModificationException
2012-04-23 09:20 972java.util.ConcurrentModif ... -
整数转换成字节型数组
2012-04-22 13:16 6013整数转换成字节型数组 描述: 整数(in ... -
java.lang.NoClassDefFoundError: javax/mail/Message解决方法
2012-04-18 10:33 1261缺少activation.jar 和 mail.jar ... -
设置javax.swing.JFrame窗口外观
2012-03-29 15:34 0设置javax.swing.JFrame窗口外 ... -
设置javax.swing.JFrame窗口外观
2012-03-29 15:34 0设置javax.swing.JFrame窗口 ... -
Java图形界面外观包substance.jar
2012-03-29 15:33 0一直以来都认为用Swing做出来的程序 ...
相关推荐
#### 小结 通过本章节的学习,我们了解了JDBC的基本概念、体系结构、API及其版本发展情况,同时也学习了如何使用JDBC来进行基础的数据库操作。接下来,我们将在后续章节中深入探讨JDBC的高级应用以及其他相关的主题...
数据库连接是应用程序与数据库进行交互的基础,本文将详细介绍三种连接SQL Server数据库的方式:JDBC方式连接SQL2005和SQL2000,以及ODBC方式连接数据库。理解并熟练掌握这些方法对于开发和维护数据库应用至关重要。...
本人学习java过程中,对多种数据库连接方法进行了小结,都有程序例程,例程非常简单易懂,同时附带了mySQL和SQLServer2000数据库驱动,希望对刚刚接触java数据库的朋友有帮助。 导入数据库驱动时要注意: mySQL的...
Java JDBC数据库连接池是Java应用程序与数据库交互的重要优化手段,旨在提高数据库访问效率和资源利用率。在传统的JDBC操作中,每次请求都需要建立和关闭数据库连接,这不仅耗时,还可能导致系统资源的过度消耗,...
Spring Boot 连接 Oracle 数据库 JDBC 配置步骤 在本文中,我们将详细介绍如何使用 Spring Boot 连接 Oracle 数据库,配置 JDBC 驱动程序,并实现数据库的基本操作。 Step 1: 添加依赖项 在 Spring Boot 项目中,...
根据给定的信息,本文将详细解释“Java数据库连接池实现”的相关知识点,包括连接池的基本概念、作用以及如何通过示例代码实现一个简单的Java数据库连接池。 ### Java数据库连接池基本概念 数据库连接池(Database...
#### 五、小结 JDBC作为Java平台中用于访问数据库的标准API,极大地简化了Java开发人员与数据库交互的过程。通过了解JDBC的基本概念、体系结构、版本发展以及常用API,我们可以更好地利用这一强大的工具来开发高效...
通过本次设计,主要是加强对 JAVA 所学知识的巩固和融会贯通,可以说是对一个学期所学知识的一个小结,加深对 JAVA 数据库的理解。 二、需求分析 该系统具备管理学生信息、课程信息、选课信息的功能:用户通过输入...
下面将详细介绍八种常见数据库的JDBC连接方式。 一、Oracle数据库连接 Oracle数据库是一种关系型数据库管理系统,广泛应用于企业级应用中。JDBC连接Oracle数据库需要加载Oracle的驱动程序,下面是连接代码: ```...
### JAVA数据库基本操作:增删改查 在Java开发中,与数据库进行交互是一项非常重要的技能。无论是构建简单的Web应用还是复杂的企业级系统,开发者都需要掌握如何通过Java代码执行SQL命令来实现数据的增删改查操作。...
1.5 本章小结 第2章 SQL语句基础之DDL 2.1 DDL基础 2.2 DDL操作视图 2.3 本章小结 第3章 SQL语句基础之DML 3.1 SELECT语句基础 3.2 WHERE子句 3.3 ORDER BY子句 3.4 GROUP BY和HAVING子句 3.5 ...
#### 四、小结 通过以上步骤,我们可以清晰地了解到如何使用JDBC来连接MySQL数据库并执行基本的操作。掌握了这些基础内容后,再学习更高级的技术,比如ibatis等ORM框架时,将会更加得心应手。理解JDBC的工作原理和...
在本篇文章中,我们将深入探讨如何有效地解决Java应用程序在连接MySQL数据库时可能遇到的各种问题。这一过程对于确保数据访问层的稳定性和效率至关重要。通过以下详细的步骤和解释,您将能够迅速定位并解决连接过程...
Java连接数据库主要通过Java Database Connectivity (JDBC) API来实现。JDBC API为Java应用程序提供了标准接口,可以用来访问任何支持SQL的关系型数据库管理系统(RDBMS)。本文将详细介绍几种常见的Java连接数据库...
最近因为要在vs code上连接到sql server数据库,第一次尝试,之前用 java的时候使用jdbc连接过数据库,感觉用vs code连接数据库步骤要简单一些,网上写的博客也不是特别多,就顺便把我的步骤记录下来,仅供参考,...
《Java数据库编程宝典》是一本集综合性、实用性为一体的全面讲解使用Java语言进行高级数据库开发的书籍。本书从数据库的基础知识、软件开发环境的构建以及JSP,Veloctiy,OJB,Struts等常用技术的基础知识入手,通过...
### 小结 通过以上介绍,我们可以了解到不同类型的数据库具有不同的连接语句。正确配置这些连接参数对于成功建立数据库连接至关重要。此外,随着技术的发展,许多现代框架和工具(如 Spring Boot)提供了更为简化的...