1. 什么是JDBC?JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
2. jdbc操作数据库的总体模型:
1)一张表对应一个pojo类,也就是一个表对应一个java对象。
2)pojo类中的属性对象表中的相应的字段。
3)一个pojo类有一个dao类,通过导类操作对应的pojo类中的属性值来实现对数据库中数据的曾、删、改、查等操作
JDBC 操作数据库的模型
3. 连接数据库的种类及方法:
不同的数据库,使用的驱动类不同,对应的连接对象也不同,不过他们都有共同点,
驱动类都是要到对应的官网下载驱动包,比如mysql的驱动包为:mysql-connector-java-5.0.5-bin.jar,将驱动包放置在工程的lib文件夹下,如果没有该文件夹,就新建一个,把驱动包复制进去,然后进行配置,有些会自动进行配置。连接url为jdbc:+所用的数据库类型+访问路径+端口号+要操作的数据库,接着根据用户和密码得到连接对象,常用的数据库类型得到连接的方法如下:
1)、Oracle8/8i/9i数据库(thin模式)
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//orcl为数据库的SID
String user="test";
String password="test";
Connection conn= DriverManager.getConnection(url,user,password);
2)、DB2数据库
Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
String url="jdbc:db2://localhost:5000/sample";
//sample为你的数据库名
String user="admin";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
3)、Sql Server7.0/2000数据库
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb";
//mydb为数据库
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
4)、Sybase数据库
Class.forName("com.sybase.jdbc.SybDriver").newInstance();
String url =" jdbc:sybase:Tds:localhost:5007/myDB";
//myDB为你的数据库名
Properties sysProps = System.getProperties();
SysProps.put("user","userid");
SysProps.put("password","user_password");
Connection conn= DriverManager.getConnection(url, SysProps);
5)、Informix数据库
Class.forName("com.informix.jdbc.IfxDriver").newInstance();
String url =
"jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;
user=testuser;password=testpassword";
//myDB为数据库名
Connection conn= DriverManager.getConnection(url);
6)、MySQL数据库
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
String url ="jdbc:mysql://localhost/myDB?user=soft&password=soft1234&useUnicod
e=true&characterEncoding=8859_1"
//myDB为数据库名
Connection conn= DriverManager.getConnection(url);
4.JDBC常用接口:
ResultSet
|
代表执行查询sql的结果集对象,通过遍历结果集可以得到查询的数据。
|
Statement
|
用于执行一条sql查询语句的声明对象,执行后可以返回ResulSet对象,其它的语句返回命令执行的个数
|
PreparedStatement
|
用于执行预编译sql语句的声明对象,执行查询后可以返回ResulSet对象,其它的语句返回命令执行的个数。
|
Connection
|
一个Connection对象代表程序与数据库的一个连结,用与创建Statement对象.
|
5.下面通过一个简单的列子把这些知识串联起来:
假设数据库类型使用的是mysql类型,已经创建好了名MyDB数据库,MyDB里面有一个课程
course,表中有字段,课程代号Cid、课程名称Name、课程学分Score、课程描述Desce四个字段
那么运用jdbc来操作数据库的步骤如下:
1)得到数据库连接对象:
//创建数据库的处理类
public class JDataBase {
// 取得数据库的连接对象
public static java.sql.Connection getConnection() {
java.sql.Connection conn = null;
if (conn == null) {
// 连接数据库URL地址
String url = "jdbc:mysql://localhost:3306/MyDB";
// 连接数据库的用户名
String user = "root";
// 连接数据库的密码
String password = "123456";
try { // 创建连接数据库的驱动类对象 java反射技术
Class.forName("com.mysql.jdbc.Driver");
// 根据驱动管理类,得到数据库的连接对象
conn = java.sql.DriverManager
.getConnection(url, user, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (java.sql.SQLException e) {
e.printStackTrace();
}
}
return conn;
}
}
2)创建表course的pojo类名为CoursePojo,并写好对应的get和set方法
//课程表的pojo类
public class CoursePojo {
private String CId;//课程代号
private String Name;//课程名称
private String Score;//课程学分
private String Desce;//课程描述
//从写无参构造器
public CoursePojo(){}
//重写构造器并传入参数,以方便创建对象
public CoursePojo(String CId,String Name,String Score,String Desce){
this.CId=CId;
this.Name=Name;
this.Score=Score;
this.Desce=Desce;
}
public String getCId() {
return CId;
}
public void setCId(String cId) {
CId = cId;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getScore() {
return Score;
}
public void setScore(String score) {
Score = score;
}
public String getDesce() {
return Desce;
}
public void setDesce(String desce) {
Desce = desce;
}
}
3)创建操作CoursePojo中属性值的ManagerDao类,并实现对数据的增删改查
//操作数据库的导类
public class ManagerDao {
public static void main(String[] args) {
// 创建导类对象
ManagerDao dao = new ManagerDao();
for (int i = 1; i < 10; i++) {
// 创建课程pojo对象,并传人相应的参数
CoursePojo c = new CoursePojo("00" + i, "course" + i, "" + i,
"desc" + i);
// 调试查找课程的方法
System.out.println("课程信息:" + dao.searchCourse(c).get(0).getName());
// 调试修改课程的方法
//
dao.modifyCourse(c);
System.out.println("xiug ");
}
}
// 添加课程的方法,返回sql语句执行条数,如果返回0,则表示操作失败
public int addCourse(CoursePojo c) {
int count = 0;
// 获得数据库连接
java.sql.Connection conn = JDataBase.getConnection();
try { // 编写需要执行的sql语句
String sql = "insert into course(CId,Name,Score,Desce) values(?,?,?,?)";
// 得到预编译处理对象
java.sql.PreparedStatement pstmt = conn.prepareStatement(sql);
// 向数据库中插入相应的数据
pstmt.setString(1, c.getCId());
pstmt.setString(2, c.getName());
pstmt.setString(3, c.getScore());
pstmt.setString(4, c.getDesce());
count = pstmt.executeUpdate();
// 关闭接口集
pstmt.close();
conn.close();
} catch (Exception ef) {
System.out.println("插入课程失败");
ef.printStackTrace();
}
return count;
}
// 查找课程信息,返回一个存有课程信息的队列
public java.util.ArrayList<CoursePojo> searchCourse(CoursePojo c) {
// 创建一个队列对象
java.util.ArrayList<CoursePojo> list = new java.util.ArrayList<CoursePojo>();
// 获得数据库连接
java.sql.Connection conn = JDataBase.getConnection();
try {
// 编写查询sql语句
String sql = "select * from course where CId=" + c.getCId();
// 得到执行对象
java.sql.Statement stmt = conn.createStatement();
// 返回一个存有查询结果的结果集
java.sql.ResultSet set = stmt.executeQuery(sql);
// 遍历结果集,并且将查询的数据设置pojo对象的属性
while (set.next()) {
c.setCId(set.getString(1));
c.setName(set.getString(2));
c.setScore(set.getString(3));
c.setDesce(set.getString(4));
// 将课程对象存到队列中
list.add(c);
}
// 关闭接口集
set.close();
stmt.close();
conn.close();
} catch (Exception ef) {
ef.printStackTrace();
}
return list;
}
// 修改课程
public int modifyCourse(CoursePojo c) {
int count = 0;
// 获得数据库连接
java.sql.Connection conn = JDataBase.getConnection();
try {
// 拼凑sql修改语句语句
String sql = "update course set Name='" + c.getName() + "',Score='"
+ c.getScore() + "',Desce='" + c.getDesce()
+ "' where CId=" + c.getCId();
java.sql.PreparedStatement pstmt = conn.prepareStatement(sql);
count = pstmt.executeUpdate();
pstmt.close();
conn.close();
} catch (Exception ef) {
ef.printStackTrace();
}
return count;
}
// 删除课程的方法
public int deleteCourse(CoursePojo c) {
int count = 0;
// 获得数据库连接
java.sql.Connection conn = JDataBase.getConnection();
try {
String sql = "delete from course where CId=" + c.getCId();
java.sql.PreparedStatement pstmt = conn.prepareStatement(sql);
// 执行SQL语句
count = pstmt.executeUpdate();
// 关闭接口 集
pstmt.close();
conn.close();
} catch (Exception ef) {
ef.printStackTrace();
}
return count;
}
}
说明:在查找时将查找结果存到队列中是为了在使用时方便取出来,其他操作返回一个int是为了判断操作是否执行成功。sql有两种语句,一种是拼凑sql语句,另一种是占位符sql语句,比如String sql = "insert into course(CId,Name,Score,Desce) values(?,?,?,?)";使用这中语句的好处是执行的速度快,而且比较安全,因为它是先发送语句,再发送对应的数据,而拼凑sql语句是一种很有规则的语句,很容易被人破解。
6.总结
在使用jdbc操作数据库时,细心是最重要的,在拼凑sql语句时玩的是文字游戏,不小心写错一个字母,得出的结果就可能完全不同,精彩性的报语法错误,关键的是每一步都打印出调试的信息,这样方便与出错时检查
- 大小: 5.8 KB
分享到:
相关推荐
在这个项目中,“JSP+Servlet + JDBC+MySQL 注册和登录”就是一个典型的技术栈,用于实现这样的系统。下面我们将深入探讨这四个技术组件及其在实现注册和登录功能中的作用。 1. **JSP(JavaServer Pages)**:JSP是...
基于jsp+servlet+jdbc+MySQL的宿舍管理系统。上传之前本人已测试,能完美运行。想查看显示效果可以复制下面的链接查看。不懂可留言或私信。适用于毕业设计,期末设计。 项目说明:...
《6月25日更新两讲北风网录制的基于JSP+JDBC+MySQL开发报价管理系统》 附Word原代码,源工程项目文件! 1.课程名称 报价管理系统 2.用到的技术呢? JSP JDBC MVC 设计模式 MySQL 3.适合的对象 刚学完JSP 没有JSP ...
【标题】"jsp+servlet+jdbc+mysql项目"是一个典型的Web开发实践,它结合了四种核心技术,用于构建基于Java的动态网页应用。JSP(JavaServer Pages)是用于创建动态网页的服务器端技术,它允许开发者在HTML代码中嵌入...
【标题】"JAVA+JDBC+mysql网上商城.rar"是一个基于Java编程语言、使用JDBC(Java Database Connectivity)连接MySQL数据库来实现的网上商城项目。这个项目可能包含了从用户界面到后端数据处理的全套功能,旨在提供一...
在本项目中,"servlet+jdbc+mysql+ajax的注册,登陆,修改,查询项目"是一个基于Web的简易应用程序,旨在演示如何使用这些技术来构建动态交互的用户界面。这个项目利用了Java Servlets处理服务器端逻辑,JDBC(Java ...
基于JSP+Servlet+JDBC+MySQL+Bootstrap的考勤管理系统 基于JSP+Servlet+JDBC+MySQL+Bootstrap的考勤管理系统 基于JSP+Servlet+JDBC+MySQL+Bootstrap的考勤管理系统 基于JSP+Servlet+JDBC+MySQL+Bootstrap的考勤管理...
图书馆系统,大一Java课程设计,swing界面,使用JDBC进行基本数据库操作。 图书馆系统,大一Java课程设计,swing界面,使用JDBC进行基本数据库操作。 图书馆系统,大一Java课程设计,swing界面,使用JDBC进行基本...
基于JDBC+MySQL+Servlet+JSP+Java实现简单校园论坛系统 基于JDBC+MySQL+Servlet+JSP+Java实现简单校园论坛系统 基于JDBC+MySQL+Servlet+JSP+Java实现简单校园论坛系统 基于JDBC+MySQL+Servlet+JSP+Java实现简单校园...
javafx+jdbc+mysql实现学生宿舍管理系统,即开即用,容易上手 javafx+jdbc+mysql实现学生宿舍管理系统,即开即用,容易上手 javafx+jdbc+mysql实现学生宿舍管理系统,即开即用,容易上手 javafx+jdbc+mysql实现学生...
javaWeb新闻发布管理系统(JSP+javabean+jdbc+mysql) javaWeb新闻发布管理系统(JSP+javabean+jdbc+mysql) javaWeb新闻发布管理系统(JSP+javabean+jdbc+mysql) javaWeb新闻发布管理系统(JSP+javabean+jdbc+...
Java+JDBC +mysql数据库 实现学生的增删改查等功能 可以选择 不同的功能来实现 增删改查 Java+JDBC +mysql数据库 实现学生的增删改查等功能 Java+JDBC +mysql数据库 实现学生的增删改查等功能 Java+JDBC +mysql...
一、项目简述 ...环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目技术: Jsp + Jdbc + Servlert + html+ css + JavaScript + JQuery + Ajax + Fileupload
java+JDBC+mysql 图书管理系统 实现了 图书的查询 修改 新增 删除等java+JDBC+mysql 图书管理系统 实现了 图书的查询 修改 新增 删除等java+JDBC+mysql 图书管理系统 实现了 图书的查询 修改 新增 删除等java+JDBC+...
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和...基于JDBC+MySQL+Servlet+JSP+Java实现简单校园论坛系统源码+项目说明.zip
Java项目_电影院售票管理系统(java+Servlet+JSP+JDBC+Mysql)含有代码注释,新手也可看懂,个人手打98分项目,毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目系统功能完善、...
本系统用的是Mysql数据库,解压文件里面有与系统相对于的数据库脚本,之间复制在Mysql数据库命令行即可。然后在浏览器地址栏中输入http://localhost:8080/note/login.jsp,既转到登录页面,本系统实现了简单的增删改...
基于jsp+js+servlet+jdbc+mysql开发产品后台管理系统,实现用户增删改查、分页,登录,注册,图片上传等功能。 包括以下5个功能: 1、登录 用户默认主页index.jsp,可选择【登录】功能,若登录成功,则进入产品管理中...
在本项目中,"Java+Servlet+Jdbc+Jsp+Mysql实现Web学生信息管理系统",开发者利用了Java后端技术、Servlet、JDBC、JSP以及MySQL数据库来构建一个完整的Web应用,用于管理学生信息。以下是这些技术在系统中的具体应用...
在本项目中,我们主要利用Spring框架,包括其核心模块Spring、MVC模块Spring MVC以及数据访问/集成模块Spring JDBC,结合MySQL数据库来构建一个基础的登录注册系统。以下是这个项目涉及的关键技术点: 1. **Spring...