java JDBC 增删改查 总结

原创 2017年01月17日 13:35:06

java 最初对数据库进行操作,是采用 jdbc 方式,现在 市场上 的 众多框架 都对此 进行了封装,但是 我们不应该 忘记 最初的"梦想"的,下面 记录下 我前几天 写一个小程序 使用到的JDBC 操作.


本文以mysql 数据库 为例,

jar包 准备:mysql-connector-java-5.1.20-bin.jar (自行百度下载)


第一步:获取数据库 链接

package com.test.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


public class JdbcUtil {

	private static String url = "jdbc:mysql://localhost:3308/test?useUnicode=true&characterEncoding=UTF-8";// 目标数据库
	private static String username = "root";//账号
	private static String password = "123456";//密码
	private static String driver = "com.mysql.jdbc.Driver";//驱动
	private static Connection conn;// 链接 ,静态保存,不可关闭,以后使用呢

	static {
		try {
			Class.forName(driver); 
			conn = DriverManager.getConnection(url, username, password);
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("(加载驱动)JDBC获取数据库链接失败:"+e.getMessage());
			conn = null;
			if(driver.equals(e.getMessage())){
				try {
					System.out.println("(不加载驱动)重新获取链接");
					conn = DriverManager.getConnection(url, username, password);
				} catch (SQLException e1) {
					e1.printStackTrace();
					System.out.println("(不加载驱动)重新获取链接失败:"+e1.getMessage());
					conn = null;
				}
			}
		}
		
		
		
	}
	
	public static Connection getConnection () {
		
		return conn;
	}
	
	public static void close(Connection con){
		if(con != null){
			try {
				con.close();
			} catch (SQLException e) {
			
				e.printStackTrace();
			}
		}
	}
	
	public static void main(String[] args) {
		JdbcUtil jdbcUtil = new JdbcUtil();
		Connection connection = jdbcUtil.getConnection();
		System.out.println(connection);
	}
}


运行后,要是出现类似结果 则说明 已经获取成功:

com.mysql.jdbc.JDBC4Connection@23ab930d

以下 是对 数据库表 进行增删改查的 基本操作;

数据库信息dll:

/*DDL 信息*/------------

CREATE TABLE `allpeople` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '参选人员姓名',
  `isSelected` int(11) DEFAULT '0' COMMENT '0:没有被选中;1:已结被选中了',
  `selectTime` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=120 DEFAULT CHARSET=utf8 COLLATE=utf8_bin


第二: 建立 对应pojo 实体类

package com.test.data;

public class AllPeople {

	private int id;
	private String name;
	private int isSelect;
	private String selectTime;
	getting  setting 方法.......
	
}


第三:操作

package com.test.service;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;

import org.springframework.stereotype.Service;

import com.lottery.data.AllPeople;
import com.lottery.util.JdbcUtil;
import com.mysql.jdbc.PreparedStatement;

@Service("peopleService")
public class PeopleService {

	/**
	 *  初始化数据 导入,把图片数据(all 中) 全部导入 数据库
	 * @param allPepple
	 */
	public void initData(List<String>  allPepple){
		Connection con = JdbcUtil.getConnection();
		try {
			Statement statemenet = con.createStatement();
			if(allPepple != null && allPepple.size() > 0){
				for (String name : allPepple) {
					String query = "insert into allpeople (name, isSelected) values('"
				            + name + "','" + 0 + "')";
				    statemenet.addBatch(query);

				}
			}
			
			int[] number = statemenet.executeBatch();
			System.out.println("初始化 共插入 数据:"+number.length +"条!");
			statemenet.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			//JdbcUtil.close(con);
		}
	}
	/**
	 * 抽中后 ,更新状态
	 * @param name
	 */
	public void updateInfo(String name ,int isSelected){
		Connection con = JdbcUtil.getConnection();
		String insertTime ="";
		if(isSelected == 1){
			SimpleDateFormat now = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			String nowTime = now.format( new Date() ); 
		
			insertTime = nowTime;
			 
		}
	 String sql ="update allpeople SET selectTime = '"+insertTime+"',isSelected = '" + isSelected + "' where name='" + name + "'";
	 PreparedStatement pstmt;
	
	    try {
	        pstmt = (PreparedStatement) con.prepareStatement(sql);
	        pstmt.executeUpdate();
	        pstmt.close();
	        
	    } catch (SQLException e) {
	        e.printStackTrace();
	    }finally{
	    	//JdbcUtil.close(con);
	    }
	   
	}

	/**
	 * 
	 * @param isSelected 1: 选择  0:没有选中
	 * @return
	 */
	public List<String> queryList(int isSelected){
		Connection con = JdbcUtil.getConnection();
		List<String> list = new ArrayList<String>();
		String sql = "select * from allpeople where isSelected = ?";
		PreparedStatement pstmt;

		try {
			//根据sql语句创建预处理对象
			pstmt = (PreparedStatement) con.prepareStatement(sql);
			
			pstmt.setObject(1, isSelected);
			//执行更新
			ResultSet rs = pstmt.executeQuery();
			while(rs.next()){
			
				String name=rs.getString("name");
				list.add(name);
			}
			pstmt.close();
			} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();

		
			}finally{
				//JdbcUtil.close(con);
			}
		// 乱序
			if(isSelected == 0 && list.size()>0){
				List<String> random = new ArrayList<String>(list.size());  
			    do {  
			        int index = Math.abs(new Random().nextInt(list.size()));  
			        random.add(list.remove(index));  
			  
			    } while (list.size() > 0);
			    list= random;
			}
		return list;
}
	public void clearData(){
		Connection con = JdbcUtil.getConnection();
		try {
			Statement sta = con.createStatement();
			String sql = "TRUNCATE TABLE allpeople";
			sta.execute(sql);
			sta.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}


谢谢观看!!!



版权声明:本文为博主原创文章,未经博主允许不得转载。

android 悬浮窗口

原文地址:http://blog.csdn.net/zhangxu365/article/details/7228322 本文为参加Google暑期大学生博客分享大赛特别撰写。 ———————...

获取Android设备唯一标识码

概述 有时需要对用户设备进行标识,所以希望能够得到一个稳定可靠并且唯一的识别码。虽然Android系统中提供了这样设备识别码,但是由于Android系统版本、厂商定制系统中的Bug等限制,稳定性...
  • Listron
  • Listron
  • 2016年08月18日 10:15
  • 729

java通过JDBC连接数据库及增删改查操作

1.实战数据库数据的准备    创建数据库(newsmanager),然后创建表news(id,title,content,type)和newstype(id,name),其中news的type和ne...

java-JDBC数据库增删改查

  • 2010年12月24日 19:31
  • 1.37MB
  • 下载

Java WEB之JDBC连接数据库的增删改查

基于Myeclipse的数据库操作(非tomcat里导入驱动程序) 1>新建java Web项目  右键点击项目工程new->folder  起名lib(用来存放jdbc驱动程序) 2>找到驱...

JAVA之操作数据库增删改查-JDBC的使用

一。准备工作: 1.操作数据库的JDBC.jar包,下载地址:http://download.csdn.net/detail/qq_33750826/9671725 2.如果你的电脑为安装mysq...

Java使用jdbc连接MySql数据库,实现增删改查

Java使用jdbc连接MySql数据库,实现增删改查

利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)

最近看老罗的视频,跟着完成了利用Java操作MySQL数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查。其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java JDBC 增删改查 总结
举报原因:
原因补充:

(最多只允许输入30个字)