Mysql基础(1)

jdbc驱动下载地址:http://mvnrepository.com/artifact/mysql/mysql-connector-java





这段代码是测试事务的基本用法以及回滚操作,其主要是要把设置为手动提交事务(setAutoCommit(false)),以及遇到异常时,通过回滚操作(rollback()),来恢复修改之前的数据!



package tk.javazhangwei.jdbc;

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;

/***
 * 测试事务的概念以及使用 和回滚操作
 * 
 * @author zw
 *
 */
public class Demo07 {
	public static void main(String[] args) {
		Connection con = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			con = DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc","root","*****");
			con.setAutoCommit(false);//设置为false  自动提交事务
			
			PreparedStatement ps = con.prepareStatement("insert into students2 (name,pwd) values (?,?)");
			ps.setObject(1, "张伟");
			ps.setObject(2, 987654321);
			ps.execute();
			System.out.println("插入一条数据成功");
			try {
				Thread.sleep(5000);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			PreparedStatement ps1 = con.prepareStatement("insert into students2 (name,pwd) values (???,?)");
			ps1.setObject(1, "张伟");
			ps1.setObject(2, 987654321);
			ps1.execute();
			System.out.println("插入另一条数据成功");
			
			con.commit();//提交
			
		} catch (ClassNotFoundException e) {
			System.err.println(e);
			try {
				con.rollback();
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}//进行回滚操作
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
}
}

筛选出指定时间段的数据,并且通过io流输出到文件中。


package tk.javazhangwei.jdbc;

import java.io.BufferedWriter;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

/***
 * 
 * <取出指定时间段的数据>
 * @author zw
 *
 */
public class Demo09 {
	/***
	 * 将字符创代表的时间格式为(yyyy-MM-dd hh:mm:ss)转为long类型
	 * @return
	 */
	public static long str2date(String date) {
		DateFormat df =new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		try {
			return df.parse(date).getTime();
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			System.out.println("解析错误,可能是输入的格式错误,请您重新输入");
		}
		return 0;
	}
	public static void main(String[] args) throws IOException {
		Connection con = null;
		ResultSet rs = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			con = DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc","root","******");
			PreparedStatement ps = con.prepareStatement("select * from students2 where regTime>? and regTime<?");
			
			Timestamp start = new Timestamp(str2date("2017-8-1 00:00:00"));
			Timestamp end = new Timestamp(str2date("2017-8-30 00:00:00"));
			ps.setObject(1, start);
			ps.setObject(2, end);
			
			rs = ps.executeQuery();
			if(!rs.next()) {
				System.out.println("没有要查询到的东西");
			}
			BufferedWriter bw = new BufferedWriter(new FileWriter(new File("d:/test/jdbc.txt")));
			while(rs.next()) {
				bw.write(rs.getInt("id")+"---"+rs.getString("name")+"---"+rs.getDate("regTime"));
				bw.newLine();
			}
			bw.flush();
			System.out.println("写入到d:/test/jdbc.txt,成功!");
			bw.close();
			ps.close();
			rs.close();
			con.close();
	
		} catch (ClassNotFoundException e) {
			System.err.println(e);
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
}
}

以下两个是BLOB (binary large object),二进制大对象和CLOB(Character Large Object) 的基本使用,其使用方法大致都一样,也是通过io流进行传输




package tk.javazhangwei.jdbc;

import java.io.File;
import java.io.FileReader;
import java.io.Reader;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.Date;
import java.util.Random;

/***
 * 测试CLOB 文本对象的使用
 * 
 * @author zw
 *
 */
public class Demo11 {
	public static void main(String[] args) throws Exception {
		Class.forName("com.mysql.jdbc.Driver");
		Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc","root","*******");
//		PreparedStatement ps = con.prepareStatement("insert into students (name,myinfo) values (?,?)");
//		ps.setString(1, "强建敏");
//		ps.setClob(2, new FileReader(new File("d:/test/myinfo.txt")));//将文本文件内容直接输入到数据库中
//		int a =ps.executeUpdate();
//		System.out.println("本次更新了"+a+"条数据库!");
		
		
		
		//取值
		PreparedStatement ps =con.prepareStatement("select * from students where id=?");
		ps.setObject(1, 5);
		
		ResultSet rs =ps.executeQuery();
		Reader r =null;
		while(rs.next()) {
			Clob c =rs.getNClob("myinfo");
			 r =c.getCharacterStream();
			int temp=0;
			while((temp=r.read())!=-1) {
				System.out.print((char)temp);
			}
		}
		r.close();
		rs.close();
		ps.close();
		con.close();
		
}
}

package tk.javazhangwei.jdbc;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.Reader;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.Date;
import java.util.Random;

/***
 * 测试处理BLOB  二进制大对象的使用
 * 
 * @author zw
 *
 */
public class Demo10 {
	public static void main(String[] args) throws Exception {
		Class.forName("com.mysql.jdbc.Driver");
		Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc","root","*******");
//		PreparedStatement ps = con.prepareStatement("insert into students (name,headImg) values (?,?)");
//		ps.setObject(1, "杨幂");
//		ps.setBlob(2, new FileInputStream(new File("d:/test/blob.jpg")));
//		ps.execute();
		
		
		//取出
		PreparedStatement ps = con.prepareStatement("select * from students where id = ?");
		ps.setObject(1, 6);
		
		ResultSet re =ps.executeQuery();
		FileOutputStream fos = new FileOutputStream("d:/test/blobs.jpg");
		while(re.next()) {
			Blob b =re.getBlob("headImg");
			InputStream r =b.getBinaryStream();
			int temp =0;
			while((temp=r.read())!=-1) {
				fos.write(temp);
			}
			
		}
		
		
		fos.flush();
		fos.close();
		re.close();
		
		ps.close();
		con.close();
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值