一。jbdc的常用API
1.Connection:数据库的链接对象
2.statement:数据库sql执行对象
3.preparedStatment:sql的预编译处理对象,是statement子接口
4.resultset:返回查询的结果集

二。jdbc开发步骤
1.在项目中加入驱动jar包
2.写jdbc链接代码
注意:日期对象的处理。从结果集中获取时间是用getTimestamp(),得到的是Timestamp对象(时间戳)
Timestamp是util.Date的子类。他们之间的互相转换是:
util.Date = Timestamp直接转换
Timestamp = new TimeStamp(util.Date.getTime());

三。工厂模式
1.工厂类,专门用来生产某一个对象的实例

四。preparedStatment 预编译sql命令接口
1.会对sql语句进行编译检查,可以用参数占位符的方式编写sql语句
2.作用:比普通statement接口执行效率更高。可以防止sql注入的侵入

  SQL实例:

 drop table user_info;
drop table group_info;
drop table contacts_info; select * from user_info
select * from group_info
select * from contacts_info delete from user_info;
delete from group_info; --创建用户信息表
create table user_info(
user_id int identity(1,1) primary key,
user_name nvarchar(30) unique not null,
user_password nvarchar(30) not null
) --创建联系人群组信息表
create table group_info(
group_id int identity(1,1) primary key,
group_name nvarchar(30),
group_state nchar(3) default '可修改',
check(group_state in ('可修改','不可改')),
user_id int,
foreign key (user_id) references user_info(user_id)
) --创建联系人信息表
create table contacts_info(
con_id int identity(1,1) primary key,
con_name nvarchar(30) not null,
con_sex nchar(1) default '男',
check(con_sex in ('男','女')),
con_age int,
con_cellphone nvarchar(30),
con_telephone nvarchar(30),
con_birth datetime,
con_email nvarchar(30),
con_static nchar(3) default '未删除',
check(con_static in ('未删除','已删除')),
group_id int,
foreign key (group_id) references group_info(group_id)
)

java实例1:创建jdbc工厂类

  jdbc.properties

jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
jdbc.username=C##java06
jdbc.password=java123

JDBCFactory.java类

 package com.demo1207;

 import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties; public class JDBCFactory {
// private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";
// private static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
// private static final String USERNAME = "C##java06";
// private static final String PASSWORD = "java123"; static String DRIVER;
static String URL;
static String USERNAME;
static String PASSWORD;
static{
//只会在类第一次加载时被执行一次,适合做资源文件的读取
//加载数据库配置文件资源
Properties pro = new Properties();
//把资源读取成字节输入流
InputStream is = JDBCFactory.class.getResourceAsStream("jdbc.properties"); try {
//通过资源对象加载字节输入流
pro.load(is);
//资源对象通过key来获取对应的文件中的值,注意:静态代码块只能使用静态属性
DRIVER = pro.getProperty("jdbc.driver");
URL = pro.getProperty("jdbc.url");
USERNAME = pro.getProperty("jdbc.username");
PASSWORD = pro.getProperty("jdbc.password");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} /**
* 获取数据库链接
* @return 如果有异常则会返回null
*/
public static Connection getConn(){
Connection conn = null;
try {
Class.forName(DRIVER);
conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
} public static void closeAll(Connection conn,Statement st,ResultSet rs){
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(st!=null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

java实例2:调用工厂类

在java类中写一个Student对象,用来封装学员信息
查询学员信息表,将结果集封装到List<Student>
提示:学员对象的时间字段用util.Date. 每个属性都要封装

  Student.java

 package com.demo1207;

 import java.util.Date;

 public class Student {
private int student_id;
private String student_name;
private String student_sex;
private int student_age;
private int class_id;
private Date birthday;
public int getStudent_id() {
return student_id;
}
public void setStudent_id(int student_id) {
this.student_id = student_id;
}
public String getStudent_name() {
return student_name;
}
public void setStudent_name(String student_name) {
this.student_name = student_name;
}
public String getStudent_sex() {
return student_sex;
}
public void setStudent_sex(String student_sex) {
this.student_sex = student_sex;
}
public int getStudent_age() {
return student_age;
}
public void setStudent_age(int student_age) {
this.student_age = student_age;
}
public int getClass_id() {
return class_id;
}
public void setClass_id(int class_id) {
this.class_id = class_id;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
} }

  JdbcTest.java

 package com.demo1207;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List; public class JdbcTest {
public static void main(String[] args) {
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = JDBCFactory.getConn();
System.out.println(conn); //处理sql命令的对象
st = conn.createStatement(); String sql = "insert into student_info values(sq_student.nextval,'叶挺',1,22,1,sysdate)";
//st来执行sql语句,注意executeUpdate是执行增删改的语句
st.executeUpdate(sql); //执行查询业务
String sql2 = "select * from student_info";
rs = st.executeQuery(sql2);
List<Student> list = new ArrayList<>();
while(rs.next()){
Student stu = new Student();
stu.setStudent_id(rs.getInt(1));
stu.setStudent_name(rs.getString(2));
stu.setStudent_sex(rs.getString(3));
stu.setStudent_age(rs.getInt(4));
stu.setClass_id(rs.getInt(5));
stu.setBirthday(rs.getTimestamp(6));
list.add(stu);
System.out.print(rs.getInt(1)+"\t");
System.out.print(rs.getString("student_name")+"\t");
System.out.print(rs.getString(3)+"\t");
System.out.print(rs.getInt(4)+"\t");
System.out.print(rs.getInt(5)+"\t");
System.out.println(rs.getTimestamp(6));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCFactory.closeAll(conn, st, rs);
}
}
}

java实例3:调用jdbc工厂类来验证登录

PreparedDemo.java
 package com.demo1207;

 import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet; public class PreparedDemo {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null; try {
conn = JDBCFactory.getConn();
String sql = "select * from user_info where username=? and pass_word=?";
ps = conn.prepareStatement(sql);
//将参数占位符赋值
ps.setString(1, "张三");
ps.setString(2, "123456"); //执行sql 和statement的执行方法一样
rs = ps.executeQuery();
if(rs.next()){
System.out.println(rs.getString(2)+"登录成功");
}else{
System.out.println("登录失败");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCFactory.closeAll(conn, ps, rs);
}
}
}

java实例4:调用工厂类进行增删改查

 package com.demo1207;

 import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Timestamp;
import java.util.Date; public class CRUDDemo {
Connection conn;
PreparedStatement ps;
ResultSet rs; public void create(){
try {
conn = JDBCFactory.getConn(); String sql = "insert into student_info values(sq_student.nextval,?,?,?,?,?)";
ps = conn.prepareStatement(sql); ps.setString(1, "田甜");
ps.setString(2, "2");
ps.setInt(3, 22);
ps.setInt(4, 1);
ps.setTimestamp(5, new Timestamp(new Date().getTime()));
ps.executeUpdate();
System.out.println("新增成功");
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCFactory.closeAll(conn, ps, rs);
}
} public void delete(){
try {
conn = JDBCFactory.getConn(); String sql = "delete from student_info where student_id=?";
ps = conn.prepareStatement(sql); ps.setInt(1, 1);
ps.executeUpdate();
System.out.println("删除成功");
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCFactory.closeAll(conn, ps, rs);
}
} public void update(){
try {
conn = JDBCFactory.getConn(); String sql = "update student_info set student_name=?,student_sex=?,student_age=?,class_id=?,birthday=? where student_id=?";
ps = conn.prepareStatement(sql); ps.setString(1, "哈哈");
ps.setString(2, "2");
ps.setInt(3, 28);
ps.setInt(4, 1);
ps.setTimestamp(5, new Timestamp(new Date().getTime()));
ps.setInt(6, 2);
ps.executeUpdate();
System.out.println("修改成功");
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCFactory.closeAll(conn, ps, rs);
}
} public void query(){
try {
conn = JDBCFactory.getConn(); String sql = "select * from student_info";
ps = conn.prepareStatement(sql); rs = ps.executeQuery();
while(rs.next()){
System.out.println();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
JDBCFactory.closeAll(conn, ps, rs);
}
}
}

作业:

一。用户管理
1.用户注册:要求用户名不能重复
2.用户登录
二。联系人组群管理
1.用户新建联系人组群:每个用户注册时都会默认新建一个名字叫“我的联系人”这么一个组群,该组群不能修改,
每个用户可以新建n个联系人组群。
2.用户修改联系组群:修改组群名字
3.用户删除组群:删除组群后,将该组的所有联系人移到默认组群“我的联系人”
三。联系人管理
1.用户新建联系人:需要指定联系人到哪个组群。联系人信息(姓名,年龄,性别,移动电话,固定电话,生日,邮箱)
2.用户修改联系人:可以修改联系人所有信息,包括组群
3.用户删除联系人:
4.查询联系人:
a.按姓名模糊查询
b.按组群查询
c.按电话号码模糊查询

1、原生jdbc连接oracle数据库简单介绍的更多相关文章

  1. jdbc连接oracle数据库

    /*** 通过改变配置文件来连接不同数据库*/package com.xykj.jdbc; import static org.junit.Assert.*; import java.io.Input ...

  2. JDBC连接Oracle数据库的问题

    场景:最近做一个java web项目,使用jdbc连接Oracle数据库,遇到了两个问题. 问题1:jdbc连接不上Ubuntu Oracle服务器? 后来发现这个问题的原因是由于连接字符串写错了,修 ...

  3. jdbc连接oracle数据库问题

    下面是JDBC连接oracle数据库流程: String dbURL = "jdbc:oracle:thin:@url:1521:service_name"; String use ...

  4. JDBC 连接Oracle 数据库,JDBC 连接Mysql 数据库

    首先是JDBC 连接Oracle  数据库 package com.util; import com.pojo.UserInfo; import java.sql.*; public class DB ...

  5. JAVA通过JDBC连接Oracle数据库详解【转载】

    JAVA通过JDBC连接Oracle数据库详解 (2011-03-15 00:10:03) 转载▼http://blog.sina.com.cn/s/blog_61da86dd0100q27w.htm ...

  6. jdbc连接oracle数据库字符串

    jdbc连接oracle数据库有两种方式: 连接数据库SID 连接数据库service_name 当连接SID时,字符串如下: url::orcl1" password="xxxx ...

  7. 简单的JDBC连接oracle数据库例子

    java连接Oracle数据库 JDBC(Java Data Base Connectivity,java数据库连接),那么我们该如何用java进行数据库的连接呢. import java.sql.C ...

  8. JDBC连接Oracle数据库时出现的ORA-12505错误及解决办法

    转载至http://www.blogjava.net/itspy/archive/2007/12/20/169072.html Oracle 问题描述:今天使用jdbc连接oracle 10.2.0. ...

  9. JDBC 连接Oracle数据库 各个对象的理解

    JDBC: 1. **代码实现:(连接oracle数据库) ​    1.导入驱动jar包 ​    2.注册驱动 ​     Class.forName("oracle.jdbc.driv ...

随机推荐

  1. redux 入门

    背景: 在react中使用redux 重点:不要滥用redux,如果你的页面非常简单,没有 那么多的互动,那么就不要使用redux,反而会增加项目的复杂性. 如果你有以下情况,则可以考虑使用redux ...

  2. jQuery中页面返回顶部的方法总结

    当页面过长时,通常会在页面下方有一个返回顶部的button,总结一下,大概三种实现方法,下面说下各方法及优缺点. 方法一 锚点定位 ? 1 <a href="#" class ...

  3. 2018-05-14 代码考古-Python3官方教程字典例程

    知乎原链 Data Structures中的第一个例程: >>> tel = {'jack': 4098, 'sape': 4139} >>> tel['guido ...

  4. PlugNT CMS v4.6.3 最新功能

    PlugNT CMS v4.6.3 最新功能: 弃用标签 selected="commend,stick" 改为andwhere="commend=1 and stick ...

  5. 转载------35岁开始转变的观念(干了这碗鸡汤再写代码保证没有bug)

    作为一个标准的IT男,从一开始的一线开发,做到管理层,又因为喜爱开发,跳槽继续专注coding,一干就是10多年.有时候就想,这样一直学习,coding,如果能干到老也挺不错的! 不过生活的压力是不会 ...

  6. 如何获取view的大小

    很多初学者都会犯一个错误 ,就是在onCreate或者onStart里面去获取view的大小,然而这样获取到的宽高通常都是0,为什么呢?因为view的测量过程和activity的生命周期不是同步的,因 ...

  7. Android为TV端助力 自定义通知栏

    package com.example.mvp; import cn.ljuns.temperature.view.TemperatureView;import presenter.ILoginPre ...

  8. Testlink1.9.17使用方法(第五章 测试用例管理)

    第五章 测试用例管理 QQ交流群:585499566 TestLink支持的测试用例的管理包含二层:分别为新建测试用例集(Test Suites).创建测试用例(Test Cases).可以把测试用例 ...

  9. 杨学明老师推出全新课程--《敏捷开发&IPD和敏捷开发结合的实践》

    课时:13小时(2天) 敏捷开发&IPD和敏捷开发结合的实践 讲  师:杨学明 [课程背景] 集成产品开发(IPD).集成能力成熟度模型(CMMI).敏捷开发(Agile Developmen ...

  10. Django Admin后台管理用户密码修改

    方法一 在Terminal中执行:python manage.py changepassword your_name(其中“your_name”为你要修改密码的用户名),根据提示内容修改即可. 方法二 ...