如何用java创建一个jdbc程序
第一个jdbc程序
JDBC简介
- Java数据库连接(Java Database Connectivity,JDBC),是一种用于执行SQL语句的Java API,它由一组用Java编程语言编写的类和接口组成。
- JDBC为数据库开发人员提供了一个标准的API,使他们能够用纯Java API来编写数据库应用程序。
- 使用JDBC编写的程序能够自动地将SQL语句传送给相应的数据库管理系统。
- JDBC扩展了Java的功能,由于Java语言本身的特点,使得JDBC具有简单、健壮、安全、可移植、获取方便等优势。
JDBC API
| 接口/类|功能说明 |
|:----:|:----- :|
|DriverManager| 数据库驱动管理类,用于加载和卸载各种驱动程序,并建立于数据库的连接|
|Connection| 此接口用于连接数据库|
|Statement |此接口用于执行SQL语句并将数据检索到ResultSet中|
|ResultSet |结果集接口,提供检索SQL语句返回数据的各种方法|
|PreparedStatement| 此接口用于执行预编译的SQL语句|
|CallableStatement| 此接口用于执行SQL存储过程的语句|
JDBC结构
1.JDBC API是Java开发工具包(JDK)的组成部份:
- JDBC驱动程序管理器
- JDBC驱动程序测试工具包
- JDBC-ODBC桥
2.JDBC驱动程序管理器是JDBC体系结构的支柱,其主要作用是把Java应用程序连接到正确的JDBC驱动程序上。
3.JDBC驱动程序测试工具包为JDBC驱动程序的运行提供一定的可信度,只有通过JDBC驱动程序测试包的驱动程序才被认为是符合JDBC标准的。
4.JDBC-ODBC桥使ODBC驱动程序可被用作JDBC驱动程序。其目标是为方便实现访问某些不常见的DBMS,它的实现为JDBC的快速发展提供了一条途径。
分析JDBC开发步骤
使用JDBC访问数据库的基本步骤一般如下:
- 加载JDBC驱动程序
- 创建数据库连接
- 创建Statement对象
- 执行SQL语句
- 处理返回结果
关闭创建的对象
开发第一个JDBC程序
package com.wfu.ch09;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Test1 {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");//里面的名字一定不要写错,这个也是导入的
//forName(String className) 返回与带有给定字符串名的类或接口相关联的 Class 对象。
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/k-user","root","123456");//试图建立到给定数据库 URL 的连接。
Statement stmt=conn.createStatement(); //创建一个 Statement 对象来将 SQL 语句发送到数据库。
// String insertsql="insert into k_user(userno,username,pwd) values('1002','张三','123')";
// int x=stmt.executeUpdate(insertsql); //executeUpdate 返回一个int 型的数据 括号里面是一个字符串数据类型,详细内容看文档
//(1) 对于 SQL 数据操作语言 (DML) 语句,返回行计数
//(2) 对于不返回任何内容的 SQL 语句,返回 0
// if(x>0){
// System.out.println("插入成功!");
// }
// String updateSql="update k_user set pwd='123456' where userno='1002'";
// int x=stmt.executeUpdate(updateSql);
// if(x>0){
// System.out.println("更新成功!");
// }
String deleteSql="delete from k_user where userno='1002'";
int x=stmt.executeUpdate(deleteSql);
if(x>0){
System.out.println("删除成功!");
}
String sql="select * from k_user";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()){
for(int i=1;i<=13;i++){
System.out.print(rs.getString(i)+" ");
}
System.out.println();
}
rs.close();
stmt.close();
conn.close();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package com.wfu.ch09;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Test2 {
public static void main(String[] args) {
try {
// step1:加载JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
// step2:建立数据库的连接
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/stock11", "root", "123");
// // step3:创建Statement对象
Statement st = conn.createStatement();
//step4:执行SQL语句
String selectSql="select * from k_user";
//step5:处理结果集
ResultSet rs=st.executeQuery(selectSql);
while(rs.next()){
for(int i=1;i<=13;i++){
System.out.print(rs.getString(i)+" ");
}
System.out.println();
// String x=rs.getString("hometown");
// System.out.println(x);
}
//step6:关闭创建的对象
//关闭结果集
rs.close();
//关闭statement对象
st.close();
//关闭连接
conn.close();
// step4: 执行SQL语句
//// String insertSql = "insert into k_user(userno,username,pwd) values('1001','tom','123')";
// int x = st.executeUpdate(insertSql);
// if(x>0){
// System.out.println("插入成功!");
// }
// String updateSql="update k_user set pwd='123456' where userno='1001'";
// int x=st.executeUpdate(updateSql);
// if(x>0){
// System.out.println("更新成功!");
// }
// String deleteSql="delete from k_user where userno='1001'";
// int x=st.executeUpdate(deleteSql);
// if(x>0){
// System.out.println("删除成功!");
// }
//
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
各个语句说明
加载JDBC驱动程序
加载驱动程序的方法:
Class.forName("DriverName")
其中DriverName是要加载的JDBC驱动程序名称。驱动程序名称根据数据库厂商提供的JDBC驱动程序的种类来确定。
加载MySQL数据库驱动程序的方法为:
Class.forName("com.mysql.jdbc.Driver");
加载Oracle数据库驱动程序的方法为:
加载Oracle数据库驱动程序的方法为:
创建数据库连接-1
DriverManager类是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库和相应驱动程序之间建立连接。该类负责加载、注册JDBC驱动程序,管理应用程序和已注册的驱动程序的连接。
DriverManager的常用方法:
| 方法名 | 功能说明 |
|---|---|
| Static connection getConnection(String url, String user, String password) | 用于建立到指定数据库 URL 的连接。其中url为 提供了一种标识数据库位置的方法,user为用户名,password为密码 |
| static Driver getDriver(String url) | 用于返回能够打开url所指定的数据库的驱动程序 |
使用DriverManager类的getConnection()创建一个数据库连接:
Connection conn = DriverManager.getConnection(String url,String user,String password);
创建数据库连接-2
URL提供了一种标识数据库位置的方法,可以使相应的驱动程序能够识别该数据库并与它建立连接。
JDBC URL由三个部分组成:
jdbc : < subprotocol> : < subname>
可以根据子协议的改变而变化。
是子协议,指数据库连接的方式。
创建数据库连接-3
对于MySQL驱动的连结的URL是:
jdbc:mysql://serverName:port/instance
- mysql为子协议名称
- serverName为MySQL数据库服务器名称,可以是一个域名,也可以是IP地址
- port为MySQL数据库的端口号,默认为3306
- instance是数据库的实例名
示例:
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/haier", "root", "123");
创建SQL 语句
创建完连接之后,可以通过此连接向目标数据库发送SQL语句。在发送SQL语句之前,须创建一个Statement类的对象,该对象负责将SQL语句发送给数据库。如果SQL语句运行后产生结果集,Statement对象会将结果集封装成ResultSet对象并返回。
通过调用Connection接口的createStatement方法来创建Statement对象,如:
Statement smt = conn.createStatement();
执行SQL语句
在Statement接口中有两个非常重要的方法,分别是executeUpdate方法和executeQuery方法。使用executeUpdate方法可以执行插入、修改和删除等操作的SQL语句, executeUpdate方法的返回值是一个int类型数值,表示更新数据表的行数。使用 executeQuery方法可以执行数据库查询操作的SQL语句,他的返回值是实现ResultSet接口的对象,在其中保存从数据库中查询出来的数据。
例如:
int row=stmt.executeUpdate(sql);
写到这,对于sql命令的展开没有进行详细的说明,在上面的例子中的代码中有很多注释,都有了详细的说明,对于如何写一个jdbc 程序也有了步骤说明,而且都是一个接着一个的,包括声明的对象类型,还有一个注意的地方就是在最后关闭程序的时候,也是有顺序的,对于有依赖关系的语句都是依次关闭的,在程序的代码中也是有说明的。
如何用java创建一个jdbc程序的更多相关文章
- 如何用Unity创建一个的简单的HoloLens 3D程序
注:本文提到的代码示例下载地址>How to create a Hello World 3D holographic app with Unity 之前我们有讲过一次如何在HoloLens中创建 ...
- SpringMVC基础入门,创建一个HelloWorld程序
ref:http://www.admin10000.com/document/6436.html 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要 ...
- linux常用终端指令+如何用vim写一个c程序并运行
在装好ubuntu之后今天学习了一些linux的一些基础知识: windows里面打开命令窗口是win+r,在linux系统里面,ctrl+alt+t打开终端,今天的一些指令都是围绕终端来说的 首先s ...
- (4opencv)如何基于GOCW,创建一个实时视频程序
直接使用提供的代码框架进行修改,是最快得到效果的方法:但是这样的灵活性较差,而且真正的程序员从来都不会停滞在这一步:我们需要的是"将框架解析到最小化.理清楚每个构建之间的关系",只 ...
- Django 创建一个应用程序
1. 认识Django Django是一个高级的Python Web框架,它鼓励快速开发和清洁,务实的设计. 由经验丰富的开发人员构建,它负责Web开发的许多麻烦,因此您可以专注于编写应用程序,而无需 ...
- 用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1
package com.ljn.base; /** * @author lijinnan * @date:2013-9-12 上午9:55:32 */ public class IncDecThrea ...
- Win32 程序开发:创建一个应用程序窗口
一.创建一个应用程序窗口 代码如下: // 头文件 #include <windows.h> // 全局变量 WCHAR g_lpszClassName[] = L"CLASSN ...
- 如何用Maven创建一个普通Java项目
一下内容包括:用Maven创建一个普通Java项目,并把该项目转成IDEA项目,导入到IDEA,最后把这个项目打包成一个jar文件. 有时候运行mvn命令失败,重复运行几次就OK了,无解(可能因为网络 ...
- 【JDBC】学习路径2-编写第一个JDBC程序
第一章:导入jar包 在未安装MySQL数据库的请务必安装,安装教程:[MySQL]从入门到掌握2-下载安装 connector/J下载地址:https://dev.mysql.com/downloa ...
随机推荐
- 关于Android WebView上传文件的解决方案
我们在开发需求的时候,难免会接入一下第三方的H5页面,有些H5页面是具有上传照片的功能,Android 中的 WebView是不能直接打开文件选择弹框的 接下来我讲简单提供一下解决方案,先说一下思路 ...
- openEntityForm时候如何给关于(regardingobjectid)类型查找字段赋值?
本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复264或者20170924可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me ...
- All about Div内显示滚动桥
Div内显示滚动桥看似是一个简单的前端问题,然而实际会发现还是有挺多需要注意的, 本文尝试对div内显示滚动桥的各种主要实现及一些难题进行研究. 横向滚动桥 横向滚动桥比较简单,无需设置宽度,直接ov ...
- 王者荣耀_KEY
WZRY 为了排位赛的Cjj神,最近耗尽气力来打WZRY. Cjj神最近有N局预约的排位赛,其中第i局需要耗时Li的时间.因为浓浓的Gay情,Cjj神不能改变这些排位赛的的顺序.作为一个很有(mei) ...
- 【转】String字符串相加的问题
String字符串相加的问题 前几天同事跟我说我之前写的代码中在操作字符串时候,使用字符串相加的方式而不是使用StringBuffer或者StringBuilder导致内存开销很大.这个问题一直在困扰 ...
- android-蓝牙通信
一:简介 由于项目曾经想用蓝牙通信,但由于蓝牙传输速度比较慢,最终还是没有使用蓝牙,不过还是在空闲之余研究了蓝牙通信,鉴于目前网上蓝牙这块教程并不多,尤其是从蓝牙扫描,蓝牙配对,蓝牙通信等完整的教程更 ...
- thinkphp增删改查
添加数据: (添加单行数据) // 添加成功返回1,失败返回0 (添加多行数据) // 返回添加数据的条数 删除数据: 修改数据: (修改单个字段) (修改多个字段) // 修改成功返回1,失败返回0 ...
- 移动HTNL5前端框架—MUI
前 言 JRedu 鉴于之前的很多前端框架(特别是响应式布局的框架),UI控件看起来太像网页,没有原生感觉,因此追求原生UI也是MUI的重要目标.MUI以iOS平台UI为基础,补充部分Andro ...
- 聊聊Java中几种常用的设计模式
1.单例模式(有的书上说叫单态模式其实都一样) 该模式主要目的是使内存中保持1个对象.看下面的例子: package org.sp.singleton; //方法一 public class Sing ...
- nginx 部署
安装nginx 1)安装pcre 从pcre的官网下载tar.gz包,官网地址为:https://sourceforge.NET/projects/pcre/files/pcre/,在这里我下载的是: ...