复习java数据库操作的总结
以前学习java数据库操作,学得那叫糊里糊涂,各种JDBC常用的类和接口根本是傻傻分不清啥是干嘛的。只是套着用用吧。
不过这次好歹清楚些了,呜呜,学习有阶段性,多次重复才有好效果,多么痛的领悟。
工程名字是瞎起的,本来想复习继承多态来着,(逃

然后再来说一下JDBC,JDBC是一种可用于执行SQL语句的Java API,是连接应用程序和数据库的纽带,可以为多种关系数据库提供统一访问,它由一组用java编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,简单地说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。
但大多数的书里面都会讲到JDBC-ODBC,然后就很懵逼,啥啊!
那么先说啥是ODBC吧。
开放数据库连接(Open Database Connectivity,ODBC)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。ODBC基于SQL,并把它作为访问数据库的标准。这个接口提供了最大限度的相互可操作性:一个应用程序可以通过一组通用的代码访问不同的数据库管理系统。一个软件开发者开发的客户/服务器应用程序不会被束定于某个特定的数据库之上。ODBC可以为不同的数据库提供相应的驱动程序。对于ASP程而言,ODBC数据源是ASP程序的ADO组件和数据库之间的接口。
由于微软的数据库不是用Java语言来编写的,但是我们需要用java语言连接微软的数据库,这样就要编写一个桥连接,使java语言编写的代码也可以操作数据库。也就是说:
JDBC是使用通过JAVA的数据库驱动直接和数据库相连,而JDBC-ODBC连接的是ODBC的数据源,真正与数据库建立连接的是ODBC。这下懂了吧。
不过我还在网页上看见另一句话,建议使用JDBC直接连接,同时最好使用连接池!
说的真对,这么多年用MYSQL,一直都是用了一个叫“mysql-connector-java-5.1.35-bin.jar”的jar包,也就是java的数据库驱动,还没有用过ODBC呢,SQL Server没怎么学过,orz。。。
贴代码:
1.连接数据库
要访问数据库,首先加载数据库的驱动程序,只需要在第一次访问数据库时家再一次,然后每次访问数据时创建一个Connection对象,接着执行操作数据库的SQL语句,最后完成数据库操作后销毁前面的Connection对象即可。
将连接数据库作为单独的一个方法,并以Connection对象作为返回值,遇到对数据库执行操作的程序时可以直接调用Conn类的getConnection方法获取连接,增加代码重用性。
package DBManager; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException; public class DBConn {
Connection conn;
public Connection getConnection(){//目的是为了获取与数据库的连接,在主方法中调用该方法。
//JDBC技术是一种执行SQL语句的javaAPI。
try {
Class.forName("com.mysql.jdbc.Driver");//java.lang包的静态方法来加载JDBC驱动程序。。加载失败异常ClassNotFoundException
System.out.println("db run success");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/littlet","root","1234");//通过访问数据库的URL获取数据库连接对象java.sql包中类DriveManager的静态方法。。连接失败异常SQLException
System.out.println("db connect success");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
//关闭Connection对象
public static void closeConnection(Connection conn){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//回滚
public static void rollbackConnection(Connection conn){
try {
conn.rollback();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
2.确定存储的类型,就是数据库中放的东西,就是我们处理的这个对象。
 package domain;
 public class Student {
     private int id;
     private String name;
     public int getId() {
         return id;
     }
     public void setId(int id) {
         this.id = id;
     }
     public String getName() {
         return name;
     }
     public void setName(String name) {
         this.name = name;
     }
 }
3.java数据库操作代码
package DBManager; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; import domain.Student; public class Select {
Connection con;
PreparedStatement sql;
ResultSet res;//ResultSet类的next()方法返回值就是boolean类型的数据,当游标移动到最后一行会返回false。
public void select(int id){
DBConn db=new DBConn();
con=db.getConnection();
try {
sql=con.prepareStatement("select * from stub where id=?");
sql.setInt(1,id);
res=sql.executeQuery();//执行预处理语句
while(res.next()){
String name=res.getString(2);
System.out.println(name);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
db.closeConnection(con);
} }
}
为什么执行SQL语句用的是PrepareStatement对象而不是Statement对象呢?有什么区别吗?
 sql=con.createStatement();有了Statement对象后,可以调用相应的方法实现对数据库的查询和修改
 res.sql.executeQery(select * from stub);//获取查询结果集使用“%”代替0个或多个字符,使用下划线“_”代替一个字符实现模糊查询。+"where name like'zhang%'"
 while(res.next()){
   int id=rew.getInt("id");
   String name=res.getString("name");
 }
向数据库发送一个SQL语句,数据库中的SQL解释器负责把SQL语句生成底层的内部命令,然后执行该命令,完成相关的数据库操作,但是不断地向数据库提交SQL语句,会增加DB中SQL解释器的负担,影响执行速度。对于JDBC,可以通过Connection对象的preparedStatement方法对SQL语句进行预处理。
复习java数据库操作的总结的更多相关文章
- Java数据库操作
		
一.JDBC 1.JDBC Java数据库连接,用于Java程序中实现数据库操作功能,java.sql包中提供了执行SQL语句,访问各种数据库的方法,并为各种不同的数据库提供统一的操作接口及类. 2. ...
 - Java数据库操作(MySQL与SQLserver)
		
在java编程开发中,数据库的开发是重头戏. MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品: SQL Server是由Microsoft开发 ...
 - Java 数据库操作
		
目录 Java数据库组织架构 下载驱动包 连接数据库 连接数据库的三个步骤 连接数据库的高开销 Statement接口介绍 PreparedStatement类 使用PreparedStatement ...
 - Java数据库操作(JDBC)
		
JDBC Java数据库连接(Java DataBase Connectivity,JDBC)用于在Java程序中实现数据库操作功能,它提供了执行SQL语句.访问各种数据库的方法,并为各种不同的数据库 ...
 - Java数据库操作类演示
		
只在mysql上测试过,不知道算不算好使1. [代码][Java]代码 package org.load.demo; import java.io.IOException;import ja ...
 - Java 学习笔记(16)——Java数据库操作
		
数据库操作是程序设计中十分重要的一个部分,Java内置JDBC来操作数据库 JDBC使用 JDBC--Java Database connecting Java数据库连接:本质上JDBC定义了操作数据 ...
 - Java数据库操作学习
		
JDBC是java和数据库的连接,是一种规范,提供java程序与数据库的连接接口,使用户不用在意具体的数据库.JDBC类型:类型1-JDBC-ODBC桥类型2-本地API驱动类型3-网络协议驱动类型4 ...
 - java数据库操作:JDBC的操作
		
1,JDBC注意操作类及接口: 数据库操作过程: 1)打开数据库服务 2)连接数据库:一般都要输入用户名,密码, 3)操作数据库:创建表:查询表,更新,记录. 4)关闭数据库. 1,DriverMan ...
 - Java数据库操作大全
		
1.提取单条记录 //import java.sql.*; Connection con=null; Statement stmt=null; ResultSet %%6=null; try { Cl ...
 
随机推荐
- 使用SpringBoot整合ssm项目
			
SpringBoot是什么? Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程. Spring Boot 现在已经成为Java ...
 - String和StringBuffer以及StringBuilder的区别
			
今天在读<java编程思想>的时间,在看到String和StringBuffer以及StringBuffer这三个类的时间,做一个随笔小结,为自己的面试做好准备! 一:String,Str ...
 - Twaver的mono-desiner导出的json文件解析
			
以画的交换机为例,其他大概都差不多. 利用Twaver做出交换机模型如图1所示,其中,每一个端口都是一个单独的对象.具体Twaver操作流程参见网址:http://twaver.servasoft.c ...
 - wpa_supplicant与kernel交互
			
wpa_supplicant与kernel交互的操作,一般需要先明确驱动接口,以及用户态和kernel态的接口函数,以此来进行调用操作.这里分为4个步骤讨论. 1.首先需要明确指定的驱动接口.因为有较 ...
 - return阻止js继续向下执行
			
终止JS运行有如下几种可能: 终止函数的运行的方式有两种 在函数中使用return,则当遇到return时,函数终止执行,控制权继续向下运行 在函数中使用try-catch异常处理,需要结束时,使用t ...
 - NSTimer使用注意事项
			
1.scheduled开头和非schedule的开头方法的区别.系统框架提供了几种创建NSTimer的方法,其中以scheduled开头的方法会自动把timer加入当前run loop,到了设定的时间 ...
 - lintcode-16-带重复元素的排列
			
带重复元素的排列 给出一个具有重复数字的列表,找出列表所有不同的排列. #### 样例 给出列表 [1,2,2],不同的排列有: [ [1,2,2], [2,1,2], [2,2,1] ] 挑战 使用 ...
 - iOS- 网络请求的两种常用方式【GET & POST】的区别
			
GET和POST 网络请求的两种常用方式的实现[GET & POST] –GET的语义是获取指定URL上的资源 –将数据按照variable=value的形式,添加到action所指向的URL ...
 - YaoLingJump开发者日志(二)
			
熟悉了一点LGame里的套路,可以正式开工了. 增加了一个信息栏,显示得分.硬币数.生命值和当前关卡(仿照了超级玛丽的布局). 准备瑶玲的各种动画(静止.奔跑.跳跃.趴下.休息和死亡等). ...
 - CEntOS6.5从启动界面直接进入命令行界面
			
ctrl + alt + F1 ctrl + alt + F2 ctrl + alt + F3 ctrl + alt + F4 ctrl + alt + F5 ctrl + alt + F6 同时按下 ...