使用JDBC开发简单的数据库应用
2016-12-03 18:52
381 查看
JDBC是Java应用程序与数据库进行连接的“桥梁”。它的设计目标是跨平台,也即是说只要你安装了对应数据库的驱动程序,你就可以通过实现
JDBC的驱动程序连接多种数据库。也就是说,JDBC是一种接口,具体的实现由相关的数据库产商提供,如优秀的开源软件MySQL、微软公司的MS SQL server
、甲骨文公司的Oracle等。
2、MVC简介
MVC是模型、视图、控制器的简称。在这种设计模式中,可以将应用程序与数据库的操作分离,使程序的结构更加清晰,有利于系统的设计、开发和维护。Model层的作用是表示出数据库中的表,使用的时候除了要定义出所有的字段以外,还需要定义对其操作的类,这里表示为数据访问对象(DAO)。也就是说,表示数据库表的类
以及对数据库表操作的类共同构成Model层。Control层的作用则是调用Model层所提供的接口,使其不与数据库进行直接的接触,将重点放在响应用户的动作上面。而View
则是与用户交互的一层,处理用户的请求,以及将用户的请求结果展示给用户。它需要在处理用户的请求后调用Control层,让控制层处理,控制层则将处理交给Model层,
完成之后将结果按原路返回给用户。
3、将数据库连接封装起来
由于数据库的连接是用的很频繁的操作,因此,可以把数据库的连接操作独立出来,减少代码的冗余。在这里使用到了静态初始化块。初始化块是Java类中的一种成员,
它由一对花括号以及花括号中的语句组成,主要的作用是定义对象时执行一些初始化操作,它最大的特点就是该类定义的所有对象都会执行初始化块中的代码。
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.lang.Class; public class MyConnection { private static final String URL="jdbc:mysql://127.0.0.1:3306/database1"; private static final String USER="root"; private static final String PASSWORD="root"; private static Connection con=null; static{ /* * 加载驱动,反射技术,通过类名将该类加载到环境中 */ try { Class.forName("com.mysql.jdbc.Driver"); //加载JDBC MySQL的驱动 con=DriverManager.getConnection(URL, USER, PASSWORD); //通过驱动管理器获取数据库连接 } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } public static Connection getConnection(){ return con; } }
4、关于SQL语句
SQL语句是操纵数据库的语句,它由数据库系统来执行。主要由数据定义语言(DDL)、数据操纵语言(DML)组成,其中DDL包括数据库的建立和删除、数据库表
的建立、删除和修改等等,DML包括数据库表中数据的增删查改等。
5、JDBC的使用
获取了数据库的连接以后,就可以使用SQL语句进行数据库的操作了。数据库连接使用的是Connection对象,语句的执行对象有Statement、PreparedStatement对象等。
语句的执行对象由Connection对象的createStatement以及preparedStatement方法创建。值得注意的是,SQL语句的书写时,可以用?指定变量的个数,然后再把变量加进去
例子如下:
public void addGoddess(Goddess goddess) throws Exception{ Connection con=MyConnection.getConnection(); String sql="insert into goddess(name,age,birthday,email,mobile) values(?,?,?,?,?)"; PreparedStatement statement=con.prepareStatement(sql); statement.setString(1, goddess.getName()); statement.setInt(2, goddess.getAge()); if(goddess.getBirthday()==null) statement.setDate(3, new Date(2010, 11, 11)); else statement.setDate(3, new Date(goddess.getBirthday().getTime())); statement.setString(4, goddess.getEmail()); statement.setString(5, goddess.getMobile()); statement.execute(); }语句的执行有execute(),executeQuery()等方法,后者执行查询操作,返回ResultSet对象,它是一个集合,可以通过next()方法取下一个对象(也就是数据库记录),
通过get**()方法获取对应字段的值,代码如下:
result=statement.executeQuery("select name,age from goddess"); while(result.next()){ Goddess g=new Goddess(); g.setName(result.getString("name")); g.setAge(result.getInt("age")); gList.add(g); }
6、复杂查询语句的使用
查询语句中一般想要查询的字段是写死了的,主要通过字段的值来查询有没有相关的记录。这里我们探讨一下书写字段以及对于字段的值都不确定的SQL语句。先上
代码:
public List<Goddess> Query(List<Map<String,Object>> params) throws Exception{ Connection conn=MyConnection.getConnection(); String sql="select * from goddess where 1=1 and "; PreparedStatement statement=conn.prepareStatement(sql); List<Goddess> list=new ArrayList<Goddess>(); if(params!=null && params.size()>0){ for(int i=0;i<params.size();i++){ Map<String,Object> map=params.get(i); sql+=map.get("name")+" "+map.get("rela")+" "+map.get("value"); } } ResultSet result=statement.executeQuery(sql); while(result.next()){ Goddess g=new Goddess(); g.setId(result.getInt("id")); g.setName(result.getString("name")); g.setAge(result.getInt("age")); g.setBirthday(result.getDate("birthday 8d79 ")); g.setEmail(result.getString("email")); g.setMobile(result.getString("mobile")); list.add(g); } return list; }在该查询语句中,有一个比较复杂的参数。它是一个List集合,集合的元素类型是Map对象,Map对象的键类型为String,值类型为Object。这个函数参数就是用来存放
SQL语句要查询的字段和对应的值,因为是存放在List中,所以可以有多个。回到SQL语句的书写中来,有一个地方值得注意的就是where 1=1,这里是为了让后面使用
的语句能够连起来。定义好了之后就是如何使用了,实际上也就是如何使用List跟Map两种数据结构的问题了。代码如下:
List<Map<String,Object>> params=new ArrayList<Map<String,Object>>(); Map<String,Object> param=new HashMap<String,Object>(); param.put("name", "name"); param.put("rela", "="); param.put("value", "'小芳'"); params.add(param); List<Goddess> list=action.query(params);
相关文章推荐
- 使用JDBC技术连接数据库(附源码)--JAVA的简单应用
- 学习《spring 3.x企业应用开发实战》之使用Spring JDBC访问数据库
- 实战 Eclipse ,Jigloo, PostgreSQL,JDBC 开发数据库查询应用系统起步(转)
- 使用C#Builder开发简单的数据库应用程序
- 使用C#开发一个简单的P2P应用
- java JDBC:一个数据库的简单使用实例
- jdbc连接各种数据库方式列表 And Servlet开发中JDBC的高级应用
- 使用C#Builder开发简单的数据库应用程序
- 数据库应用开发工具Toad使用笔记
- 使用C#开发一个简单的P2P应用
- 使用microsoft EnterpriseLibrary连接不同数据库简单应用
- 使用C#开发一个简单的P2P应用
- 使用C#开发一个简单的P2P应用
- 使用C#开发一个简单的P2P应用
- 使用C#开发一个简单的P2P应用
- 使用C#开发一个简单的P2P应用
- 使用C#开发一个简单的P2P应用
- 介绍一个简单的数据库开发平台——mcis应用服务器中间件
- jdbc连接各种数据库方式列表 And Servlet开发中JDBC的高级应用
- VC编程技术点滴(七)简单的数据库应用开发