之前学习了数据库原理,上学期也学了oracle数据库,我的学习视频上是讲的mysql数据库,其实都差不多,复习了下sql知识,数据库的学习就没有写下来了,就从Java怎么操作数据库开始吧。

  因为这年过完了,开始新的学习,有时间边学边写了。其实JDBC网上教程挺多的,我看视频学习的笔记都尽量写在代码里了。就直接上代码吧。

 package com.gh;

 import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* PreparedStatement的setDate类是java.sql包里的Date
* ResultSet 的getDate还回一个java.sql.Date
* sql.Date是util.Date的子类 可以直接转util.Date
* util.Date转sql.Date可以 new sql.Date(new util.Date().getTime());
* @author ganhang
*
*/
public class JdbcDemo {
//驱动类
public static String Driver="oracle.jdbc.OracleDriver";
//数据库地址
public static String url="jdbc:oracle:thin:@localhost:1521:orcl";
//数据库用户名
public static String user="scott";
//数据库密码
public static String password=".";
/**
* 查找
*/
public static void find(){
try {
Class.forName(Driver);
Connection conn=DriverManager.getConnection(url, user, password);
String sql="select * from test";
PreparedStatement ps=conn.prepareStatement(sql);//不要用Stateme ,有sql注入问题,不安全
ResultSet rs=ps.executeQuery();//返回结果集(实际上是引用)
while(rs.next()){
System.out.println(rs.getInt(1));
}
rs.close();
ps.close();
conn.close();
System.out.println("success!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* jdbc事务处理
* 处理多条sql语句(运行sql脚本)
*/
public static void update(){
/**
* 这里我发现如果想用addBatch()方法添加批处理命令只能用Statement接口
* 而且addBatch()方法不能添加查询语句
* 如果用PreparedStatement只能单独执行一句sql
*/
Connection conn=null;
try {
Class.forName(Driver);
conn=DriverManager.getConnection(url, user, password);
conn.setAutoCommit(false);//改为手动commit
Statement ps=conn.createStatement();
String sql1="insert into test values(16)";
//PreparedStatement ps=conn.prepareStatement(sql1);
//ps.addBatch();
ps.addBatch(sql1);
//String sql2="update test set n=17 where n=16";
String sql2="delete from test where n=1";
//ps=conn.prepareStatement(sql2);
ps.addBatch(sql2);
ps.executeBatch();
//懒得数据库去查询。。。直接这边输出
//ps=conn.prepareStatement(sql3);
String sql3="select * from test";
ResultSet rs=ps.executeQuery(sql3);
while(rs.next()){
System.out.println(rs.getInt(1));
}
conn.commit();//提交事务
ps.close();
conn.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
} }
//Statement实现,不安全
public static void insert(){//更新删除只改sql就可以
try {
//加载驱动
Class.forName(Driver);
//获得连接,注意是java.sql的Connection,mysql包也有Connection接口
Connection conn=DriverManager.getConnection(url, user, password);
//sql语句
String sql="insert into test values(100)";
//获得Statement对象
//说明文档有这么一句注释:在默认情况下,同一时间每个 Statement 对象在只能打开一个 ResultSet 对象。
//因此,如果读取一个 ResultSet 对象与读取另一个交叉,则这两个对象必须是由不同的 Statement 对象生成的。
//如果存在某个语句的打开的当前 ResultSet 对象,则 Statement 接口中的所有执行方法都会隐式关闭它。
Statement stat=conn.createStatement();
//执行sql(实际上是把sql发送给数据库,数据库去执行类似Scoket通信)
stat.executeUpdate(sql);
//关闭相关连接释放资源
stat.close();
conn.close();
System.out.println("success!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
//PreparedStatement实现
public static void insert2(int n){
try {
Class.forName(Driver);
Connection conn=DriverManager.getConnection(url, user, password);
String sql="insert into test values(?)";
PreparedStatement ps=conn.prepareStatement(sql);
ps.setInt(1, n);
ps.executeUpdate();
ps.close();
conn.close();
System.out.println("success!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//insert();
//insert2(1);
//find();
update();
}
}

java学习之JDBC的更多相关文章

  1. Java学习之JDBC 2019/3/10

    Java学习之JDBC 大部分的程序都是用来通过处理数据来达到人们预期的效果,数据是粮食,没有数据操作的程序就像helloworld程序一样没有用处.因此数据库操作是重中之重,是程序发挥功能的基石,j ...

  2. Java学习笔记——JDBC读取properties属性文件

    Java 中的 properties 文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件. 文件的内容是格式是"键=值"(key-valu ...

  3. Java学习笔记——JDBC之与数据库MySQL的连接以及增删改查等操作

    必须的准备工作 一.MySQL的安装.可以参考博文: http://blog.csdn.net/jueblog/article/details/9499245 二.下载 jdbc 驱动.可以从在官网上 ...

  4. Java学习笔记--JDBC数据库的使用

    参考  hu_shengyang的专栏 : http://blog.csdn.net/hu_shengyang/article/details/6290029 一. JDBC API中提供的常用数据库 ...

  5. java学习之jdbc的封装

    jdbc是连接数据库必不可少的工具,但每次连接都要重新写一遍太麻烦了,也不利于代码的可读性,这里做一个工具类进行封装. package com.gh; import java.sql.Connecti ...

  6. JAVA学习笔记 -- JDBC及其应用

    一个.准备工作 1.开放SQL Server服务与支持TCP/IP  进一步确认TCPport watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjk ...

  7. Java学习(JDBC java连接数据库)

    一.概述 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写 ...

  8. Java学习:JDBC快速入门

    本节类容 JDBC基本概念 快速入门 JDBC基本概念 概念: Java DataBase Connectivity Java 数据库连接,Java语言操作数据库 JDBC本质: 其实是官方(sun公 ...

  9. Java学习之==>JDBC

    一.概述 官方解释: JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的 Java API,可以为多种关系型数据库提供统一访问,它由一组用 ...

随机推荐

  1. UITextField键盘类型

    UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)];  //初始化textfield并 ...

  2. 输出多行字符的一个简单JAVA小程序

    public class JAVA { public static void main(String[] args) { System.out.println("-------------- ...

  3. pyhon MySQLdb查询出来的数据设置为字典类型

    import MySQLdbimport MySQLdb.cursors cxn=MySQLdb.Connect(host='localhost',user='root',passwd='1234', ...

  4. 在Ubuntu 11.10工具栏上用数字显示网速、CPU负荷和内存占用量『译』

    基本上照抄了<How To Display Network Upload / Download Speed On The Panel In Ubuntu 11.04>,只不过我的实践环境是 ...

  5. 《Pointers On C》读书笔记(第四章 语句)

    1.空语句只包含一个分号,它本身并不执行任何任务,其适用的场合是语法要求出现一条完整的语句,但并不需要它执行任何任务. 2.C语言中并不存在专门的“赋值语句”,赋值就是一种操作,在表达式内进行.通过在 ...

  6. Jmeter 笔记

    Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如静态文件. ...

  7. MySQL性能调优的方法

    第一种方法 1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的 性能,我们可以将表中字 ...

  8. 我的MYSQL学习心得 备份和恢复(详细)

    备份 逻辑备份方法 使用MYSQLDUMP命令备份 MYSQLDUMP是MYSQL提供的一个非常有用的数据库备份工具.mysqldump命令执行时将数据库备份成一个文本文件, 该文件中实际上包含了多个 ...

  9. [置顶] .NET下枚举类型的Save和Load分析

    今天在写代码的时候,心血来潮对原来的字符串保存状态位的方式很不满意,对于代码里出现了 state == "1" 这样的状态判断很是不爽.那么理想中的判断是怎样的呢?很简单如你所想枚 ...

  10. PID教程

    PID教程 介绍 本教程将向您展示了比例每一个比例项 (P)的特点,积分项(I)和微分项 (D) 控制,以及怎样使用它们来获得所需的响应.在本教程中,我们会考虑下面单位反馈系统: Plant[被控对象 ...