JavaEE系列之(三)JDBC操作MySQL数据库
一、JDBC简介
ResultSet rs = st.executeQuery(sql);

//查询操作
Statement st = conn.createStatement();
String sql = “select * from user where id=1;
ResultSet rs = st.executeQuery(sql);
while(rs.next()){
//根据获取列的数据类型,分别调用rs的相应方法
//映射到java对象中
} //插入操作
String sql = "insert into user(….) values(…..) ";
int num = st.executeUpdate(sql);
if(num>0){
System.out.println("插入成功!!!");
}
//修改操作
String sql = “update user set name=‘’ where name=‘’";
int num = st.executeUpdate(sql);
if(num>0){
System.out.println("修改成功!!!");
}
//删除操作
String sql = “delete from user where id=1;
int num = st.executeUpdate(sql);
if(num>0){
System.out.println("删除成功!!!");
}
7、PreparedSatement类详解:
String insertString = "insert into users values(?,?,?,?);";
//id, name, password, email PreparedStatement preparedStatement= connection.prepareStatement(insertString);
preparedStatement.setInt(1, 1);
preparedStatement.setString(2, "zhangsan");
preparedStatement.setString(3, "123456");
preparedStatement.setString(4, "zhansan@sina.com");
preparedStatement.execute();
8、使用JDBC处理大文本和大二进制数据:
//把一个文件里的内容保存到 text 列中
File file = new File("1.txt");
FileReader fileReader = new FileReader(file);
String insertsString ="insert into lobtest values(?,?)";
PreparedStatement ps = connection.prepareStatement(insertsString); /* void setCharacterStream(int parameterIndex, Reader reader)
将指定参数设置为给定 Reader 对象。
//mysql 仅支持这个方法
void setCharacterStream(int parameterIndex, Reader reader, int length)
将给定参数设置为给定 Reader 对象,该对象具有给定字符数长度。
void setCharacterStream(int parameterIndex, Reader reader, long length)
将指定参数设置为给定 Reader 对象,该对象具有给定字符数长度。 */
ps.setInt(1, 1);
ps.setCharacterStream(2,fileReader,(int)file.length());
ps.execute();
//把一个text列中的内容存储到一个文件中
File file = new File("2.txt");
FileWriter fileWriter = new FileWriter(file);
String queryString ="select content from lobtest where id = ?";
PreparedStatement ps = connection.prepareStatement(queryString);
ps.setInt(1, 1);
ps.execute();
rs=ps.getResultSet();
rs.next();
Reader reader = rs.getCharacterStream(1); char[] ch = new char[1024];
int len = 0;
while ((len=reader.read(ch, 0, 1024))!=-1) {
fileWriter.write(ch, 0, len);
}
reader.close();
fileWriter.close();//先将一张图片放入到数据库中
String insertString = "insert into lobtest2 values(?,?);";
PreparedStatement prepareStatement = connection.prepareStatement(insertString)
File file = new File("zixia.jpg");
FileInputStream fis= new FileInputStream(file);
prepareStatement.setInt(1, 2);
prepareStatement.setBinaryStream(2, fis,(int)file.length());
prepareStatement.execute();
//在从数据库中读出一张照片到文件中
String qureyString ="select context from lobtest2 where id = ?";
PreparedStatement prepareStatement = connection.prepareStatement(qureyString);
prepareStatement.setInt(1, 2);
prepareStatement.execute();
ResultSet resultSet = prepareStatement.getResultSet();
resultSet.next();
InputStream stream = resultSet.getBinaryStream(1);
FileOutputStream fos = new FileOutputStream("mm.jpg");
byte[] b=new byte[1024];
int len=0;
while ((len=stream.read(b, 0, 1024))!=-1) {
fos.write(b, 0, len);
} fos.close();
stream.close();9、使用JDBC进行批处理:
conn = JdbcUtil.getConnection();
String sql = "insert into user(name,password,email,birthday) values(?,?,?,?)";
st = conn.prepareStatement(sql);
for(int i=0;i<50000;i++){
st.setString(1, "aaa" + i);
st.setString(2, "123" + i);
st.setString(3, "aaa" + i + "@sina.com");
st.setDate(4,new Date(1980, 10, 10));
st.addBatch();
if(i%1000==0){
st.executeBatch();
st.clearBatch();
}
}
st.executeBatch();
优点:发送的是预编译后的SQL语句,执行效率高。
CallableStatement cStmt = conn.prepareCall("{call demoSp(?, ?)}");
cStmt.setString(1, "abcdefg");
cStmt.registerOutParameter(2, Types.VARCHAR);
cStmt.execute();
System.out.println(cStmt.getString(2));
JavaEE系列之(三)JDBC操作MySQL数据库的更多相关文章
- Java使用Jdbc操作MySql数据库(一)
这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...
- JDBC操作MySQL数据库案例
JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...
- 原生Jdbc操作Mysql数据库开发步骤
原生Jdbc操作Mysql数据库开发步骤 原生的Jdbc就是指,不使用任何框架,仅用java.sql包下的方法实现数据库查询等的操作. 下面是开发步骤: 1.导入数据库驱动包 ...
- java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据
package com.swift.department; import java.sql.Connection; import java.sql.PreparedStatement; import ...
- 使用JDBC操作MySQL数据库
一.JDBC简介 JDBC(Java DataBase Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一的访问,它由一组用Java语言编写的类和接口组 ...
- Java第三十五天,用JDBC操作MySQL数据库(一),基础入门
一.JDBC的概念 Java DataBase Connectivity 从字面意思我们也不难理解,就是用Java语言连接数据库的意思 JDBC定义了Java语言操作所有关系型数据库的规则(接口).即 ...
- JavaWeb用Jdbc操作MySql数据库(一)
一.添加开发包.在JavaWeb中用jdbc操作数据库,使用方法与java一样,但是在处理开发包的问题上有点差别.JavaWeb不能将mysql-connector-java-5.1.7-bin.ja ...
- 原生jdbc操作mysql数据库详解
首先给大家说一下使用JDBC链接数据库的步骤 1.加载链接数据库驱动 2.建立数据库链接 3.创建数据库操作对象 4.编写sql语句,执行sql语句 5.获取结果集 6.释放资源 我这边采用的是mav ...
- Java学习笔记(十一)——通过JDBC操作mysql数据库
[前面的话] 时间总是好快,每次都感觉还没有怎么好好去过,对于好多事情,希望自己可以做的更多一点.心情能够好一点,平淡一点就行了. 学习过程中的知识点总结,基础知识,选择阅读. [JDBC定义] 定义 ...
随机推荐
- MySQL DATE_SUB() 函数
定义和用法 DATE_SUB() 函数从日期减去指定的时间间隔. 语法 DATE_SUB(date,INTERVAL expr type) date 参数是合法的日期表达式.expr 参数是您希望添加 ...
- Python进程和线程
引入进程和线程的概念及区别 1.线程的基本概念 概念 线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但 ...
- ZeroCopyLiteralByteString cannot access superclass
问题描述 在HBase上运行MapReduce作业时,报如下异常:IllegalAccessError: class com.google.protobuf.HBaseZeroCopyByteStri ...
- [Android][Audio] audio_policy.conf文件分析
不同的Android产品在音频的设计上通常是存在差异的,而这些差异可以同过Audio的配置文件audio_policy.conf来获得.在Android系统中音频配置文件存放路径有两处,存放地址可以从 ...
- django 搭建自己的博客
原文链接:http://www.errdev.com/post/4/ 每一个爱折腾的程序员都有自己的博客,好吧,虽然我不太喜欢写博客,但是这样骚包的想法却不断涌现.博客园虽好,可以没有完全的掌控感,搭 ...
- c++类使用
一.C++定义类(注意:结束部分的分号不能省略) class 类名 { public: //公共的行为或属性 private: //公共的行为或属性 }; 注意:类的成员变量在定义时不能进行初始化, ...
- NServiceBus-日志
默认的日志 NServiceBus一些有限,固执己见,内置的日志记录. 默认的日��行为如下: 控制台 所有 Info(及以上)消息将被输送到当前的控制台. 错误将会写 ConsoleColor.Re ...
- [转载]关于CSDN, cnblog, iteye和51cto四个博客网站的比较与分析
CSDN:http://blog.csdn.net/ cnblog: http://www.cnblogs.com/ iteye: http://www.iteye.com/blogs/ 51cto: ...
- 【MySQL】源码编译安装和配置MySql 5.5.32(单实例)
[需求描述] 在CentOS环境中,通过编译源码的方式,安装并且配置“单实例”的MySQL5.5.32数据库. MySQL的安装目录为:/application/mysql-5.5.32 MySQL数 ...
- C++11右值引用
[C++11右值引用] 1.什么是左值?什么是右值? 左值是表达式结束后依然存在的对象:右值是表达式结束时就不再存在的对象. 2.std::move的作用是什么? std::move用于把任意类型转化 ...