JDBC编程理论知识(1)
1.SUN公司为统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC
2.JDBC全称为:Java Data Base Connectivity(java数据库连接),它主要由接口组成。
组成JDBC的2个包:
(1)java.sql.*;
(2)javax.sql.*;
3.JDBC在程序中的位置:
4.JDBC的六个固定步骤
1。注冊数据库驱动[利用反射]
2。取得数据库连接对象Connection
3。创建SQL对象
4。运行SQL命令,并返回结果集
5。处理结果集
6,依次关闭结果集
5.JDBC的DriverManager对象:
(1).Jdbc程序中的DriverManager用于载入驱动,并创建与数据库的链接。这个API的经常用法:DriverManager.registerDriver(new Driver())。注意:在实际开发中,并不推荐採用这种方法注冊驱动。查看Driver的源码能够看到。假设採用此种方式,会导致驱动程序载入两次,也就是在内存中会有两个Driver对象。
java.sql.Driver(接口)-com.mysql.jdbc.Driver(实现类)
(首先返回true)boolean acceptsURL(String url)
查询驱动程序是否觉得它能够打开到给定 URL 的连接。
(然后)Connection connect(String url, Properties info)
试图创建一个到给定 URL 的数据库连接。
(2).推荐方式:Class.forName(“com.mysql.jdbc.Driver”);採用此种方式不会导致驱动对象在内存中反复出现,而且採用此种方式,程序只只须要一个字符串,不须要import驱动的API。这样可使程序不依赖详细的驱动,使程序的灵活性更高。
DriverManager.getConnection(url, user, password),依据url获取数据库的链接。
6.数据库的URL
URL用于标识数据库的位置。程序猿通过URL地址告诉JDBC程序连接哪个数据库,
(1).经常使用数据库URL地址的写法:
Oracle—jdbc:oracle:thin:@localhost:1521:sid
SqlServer—jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sid
MySql—jdbc:mysql://localhost:3306/sid
(2).Mysql的url地址的简写形式: jdbc:mysql:///sid
7.JDBC的Connection对象:
Jdbc程序中的Connection。它用于代表数据库的链接,Collection是数据库编程中最重要的一个对象,client与数据库全部交互都是通过connection对象完毕的,这个对象的经常用法:
createStatement():创建向数据库发送sql的statement对象。
prepareStatement(sql) :创建向数据库发送预编译sql的PrepareSatement对象。
prepareCall(sql):创建运行存储过程的callableStatement对象。
setAutoCommit(boolean autoCommit):设置事务是否自己主动提交。
commit() :在链接上提交事务。
rollback() :在此链接上回滚事务。
8.JDBC的statement:
Jdbc程序中的Statement对象用于向数据库发送SQL语句。 Statement对象经常用法:
execute(String sql):用于向数据库发送随意sql语句
executeQuery(String sql) :仅仅能向数据发送select语句。
executeUpdate(String sql):仅仅能向数据库发送insert、update或delete语句
addBatch(String sql) :把多条sql语句放到一个批处理中。
executeBatch():向数据库发送一批sql语句运行。
clearBatch():清空缓冲
9.JDBC的ResultSet对象:
Jdbc程序中的ResultSet用于代表Sql语句的运行结果。
Resultset封装运行结果时。採用的类似于表格的方式。ResultSet 对象维护了一个指向表格数据行的游标。初始的时候,游标在第一行之前,调用ResultSet.next() 方法,能够使游标指向详细的数据行。进行调用方法获取该行的数据。
(1)ResultSet既然用于封装运行结果的,所以该对象提供的都是用于获取数据的get方法:
获取随意类型的数据
getObject(int index)
getObject(string columnName)
获取指定类型的数据,比如:
getString(int index)
getString(String columnName)
(2).ResultSet还提供了对结果集进行滚动的方法:
next():移动到下一行
previous():移动到前一行
absolute(int row):移动到指定行
beforeFirst():移动resultSet的最前面。
afterLast() :移动到resultSet的最后面。
10.MySQL和java的数据类型的转换
11.代码演示:
package cn.wwh.www.java.jdbc; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement; /**
*类的作用:用来练习JDBC编程的,连接的数据库是MySQL
*
*
*
*
*@author 一叶扁舟
*@version 1.0
*@创建时间: 2014-8-7 下午08:28:42
*/
public class FirstJDBC {
/**
*建表语句:
drop table if exists person;
create table person(
id int primary key auto_increment,
name char(12),
password char(12),
sex char(2) );
insert into person values(1,"wuhui",123456,"男");
insert into person values(2,"一叶扁舟",123456,"男");
*/
private static String driverClass = "com.mysql.jdbc.Driver";
private static String url = "jdbc:mysql://127.0.0.1:3306/user";
private static String user = "root";
private static String password = "wwh"; public static void main(String[] args) throws Exception {
//
// 1.载入驱动
// (1).方式1:
// DriverManager.registerDriver(new Driver());
// (2).方式2:利用反射的方式
Class.forName(driverClass);
// 使用DriverManager获取数据的连接,
// 当中返回的Connection就代表java程序和数据库的连接
/**
* @param url
* jdbc:subprotocol:subname 形式的数据库 url
* @param user
* 数据库用户,连接是为该用户建立的
* @param password
* 登录数据库的密码
*/
Connection conn = DriverManager.getConnection(url, user, password); Statement statement = conn.createStatement();
String sql = "select * from person;";
// 运行SQL命令,并返回符合条件的记录集合
ResultSet result = statement.executeQuery(sql);
// 採用两种方式接受查询的结果
while (result.next()) {
// 获取第1列的数据id
int id = result.getInt(1);
// 获取字段是name的数据结果
String name = result.getString("name");
String password = result.getString(3);
String sex = result.getNString("sex"); System.out.println("id=" + id + "\tname=" + name + "\tpassword="
+ password + "\tsex=" + sex);
}
// 一次关闭数据库流
result.close();
statement.close();
conn.close(); } }
代码的測试效果截图:
JDBC编程理论知识(1)的更多相关文章
- Mysql——JDBC编程 理论介绍
一.JDBC简介(来自俞琰--数据库老师) Java数据库编程主要使用JDBC技术.JDBC是一种用于执行SQL语句的Java API.它由一组用Java编写的类和接口组成.JDBC为开发人员提供了一 ...
- 用VC进行COM编程所必须掌握的理论知识
一.为什么要用COM 软件工程发展到今天,从一开始的结构化编程,到面向对象编程,再到现在的COM编程,目标只有一个,就是希望软件能象积方块一样是累起来的,是组装起来的,而不是一点点编出来的.结构化编程 ...
- Winsock网络编程笔记(4)----基本的理论知识
前面的笔记记录了Winsock的入门编程,领略了Winsock编程的乐趣..但这并不能算是掌握了Winsock,加深理论知识的理解才会让后续学习更加得心应手..因此,这篇笔记将记录一些有关Winsoc ...
- JDBC理论知识
JDBC理论知识 JDBC基础 JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统.通用的SQL数据库存取和操作的公共接口(一组API), 定义了用来访问数 ...
- JAVA基础知识之JDBC——编程步骤及执行SQL
JDBC编程步骤 下面以mysql数据库为例, 1.加载驱动 首先需要下载数据库的驱动jar文件,并且在eclipse包中加入到class path中去, 例如mysql的驱动文件 mysql-con ...
- JDBC编程之事务的使用教程
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5868750.html 关于事务的理论知识.ACID特性等等,网上太多了,在此不一一重复.本文主要着重 事务 ...
- 单独使用jdbc编程问题总结(一)
在学习Mybatis之前,我们先来回顾JDBC编程的相关知识.在此基础上深入的学习Mybatis框架.如有错误,敬请指正. (一)首先我们既然要使用jdbc,当然是要操作数据库了.创建一个名为:myb ...
- 浅谈JDBC编程
一.概述 1.为什么要用JDBC 数据库是程序不可或缺的一部分,每一个网站和服务器的建设都需要数据库.对于大多数应用程序员(此处不包含数据库开发人员)来说,我们更多的不是在DBMS中对数据库进行操纵, ...
- [转] DDD领域驱动设计(三) 之 理论知识收集汇总
最近一直在学习领域驱动设计(DDD)的理论知识,从网上搜集了一些个人认为比较有价值的东西,贴出来和大家分享一下: 我一直觉得不要盲目相信权威,比如不能一谈起领域驱动设计,就一定认为国外的那个Eric ...
随机推荐
- 使用 WideCharToMultiByte Unicode 与 UTF-8互转
1.简述 最近在发送网络请求时遇到了中文字符乱码的问题,在代码中调试字符正常,用抓包工具抓的包中文字符显示正常,就是发送到服务器就显示乱码了,那就要将客户端和服务器设置统一的编码(UTF-8),而我们 ...
- [Oracle] DataGuard switchover
Oracle DataGuard switchover 2013/07/11 Tag.Data Guard,primary,standby,switchover 切换前primary site和sta ...
- ios 最新系统bug与解决——微信公众号中弹出键盘再收起时,原虚拟键盘位点击事件无效
最近ios发布新版本系统12.1,随着部分用户的系统更新,一些问题也渐渐暴露出来... 公司用户反映微信公众号出现了点击无效的bug!!测试调查发现,只有iphonex.iphone6,ihpone7 ...
- Centos7下zabbix部署(三)自定义监控项
引言 在前面的博客中我们介绍了zabbix自带的模板,并且完成了我们的一些比较常用的监控,现在我们如果想要监控我们磁盘的IO,这时候zabbix并没有给我们提供这么一个模板,所以我们需要自己来创建一个 ...
- hdu 5101(思路题)
Select Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- 在vc6里头文件sys/timeb.h里struct timeb各变量的具体含义?
timeb的定义:struct _timeb{ time_t time; unsigned short millitm; short timezon ...
- AC日记——可能的路径 51nod 1247
可能的路径 思路: 看到题目想到gcd: 仔细一看是更相减损: 而gcd是更相减损的优化版: 所以,对于每组数据判断gcd是否相等就好: 来,上代码: #include <cstdio> ...
- MSSQL-字符串分离与列记录合并成一行混合使用
一般我们在数据库的表字段存储字典Id,如果有多个的话一般是用,或分隔符分隔(12,14),列表显示的时候是显示字典名,那如果要在数据库将字典Id转成用户看得懂的字典名,该怎么办呢? 我们这时候可以结合 ...
- (转)MYSQL 的 WITH ROLLUP
使用 GROUP BY 的 WITH ROLLUP 字句可以检索出更多的分组聚合信息,它不仅仅能像一般的 GROUP BY 语句那样检索出各组的聚合信息,还能检索出本组类的整体聚合信息. 下面我们的例 ...
- POJ 2836 Rectangular Covering(状压DP)
[题目链接] http://poj.org/problem?id=2836 [题目大意] 给出二维平面的一些点,现在用一些非零矩阵把它们都包起来, 要求这些矩阵的面积和最小,求这个面积和 [题解] 我 ...