`

jdbc连接数据库的实现

    博客分类:
  • java
阅读更多

       写了一点测试用例。很久没有使用过jdbc了。写起来还是怪生疏的。还是习惯JDBCTemplate啊。大家做工程还是使用框架能快一点点。

 

 

package com.myTest.jdbc;

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;

import com.mysql.jdbc.PreparedStatement;

public class JdbcTestClass {
	private String url="jdbc:mysql://localhost:3306/xview?user=root&password=root";
		
	public static Connection getConn(String url) {
			Connection conn = null;
			
		try {
			//1.加载驱动
			Class.forName("com.mysql.jdbc.Driver");
				
			//2.获取连接 
			conn = DriverManager.getConnection(url);
		} catch (ClassNotFoundException e) {
				System.err.println("加载数据库驱动失败["+e.getMessage()+"]");
				conn = null;
		} catch (SQLException e) {
			e.printStackTrace();
			conn = null;
		}
			
		return conn;
	}
		
	public List<List<Object>> testSelect(){
		
		String sql="SELECT * FROM a;";
		
		Statement stat = null;
		ResultSet rs = null;
		
		Connection conn = JdbcTestClass.getConn(this.url);
		List<List<Object>> result = new ArrayList();
		if(conn!=null){
			try {
				stat = conn.createStatement();
				rs = stat.executeQuery(sql);
				while(rs.next()){
					List row = new ArrayList();
					for(int i=1;i<=rs.getMetaData().getColumnCount();i++){
						String className = rs.getMetaData().getColumnClassName(i);
						try {
							Object obj =rs.getObject(i);
							row.add(obj);
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
					result.add(row);	
				}
				
				stat.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return result;
	}
	
	public boolean testInsert(List<List<Object>> rows){
		boolean flag = false;
		Connection conn = null;
		Statement stat = null;
		
		conn = JdbcTestClass.getConn(this.url);
		
		if(conn!=null){
			try {
				
				String sql = "INSERT INTO b VALUES(";
				stat=conn.createStatement();
				for(int i=0;i< rows.get(0).size();i++){
					sql+="?";
					if(i!=rows.get(0).size()-1){
						sql+=",";
					}else{
						sql+=") ON DUPLICATE KEY UPDATE day_id=day_id;";
					}
				}
				System.out.println(sql);
				java.sql.PreparedStatement pstmt = conn.prepareStatement(sql);
				for(int rowNum=0;rowNum<rows.size();rowNum++){
					List<Object> row = rows.get(rowNum);
					int i=1;
					for(Object column: row){
						System.out.println(i);
						pstmt.setObject(i++, column);
					}
					pstmt.addBatch();
					
				}
				pstmt.executeBatch();
				pstmt.close();
				flag = true;
			} catch (SQLException e) {
				e.printStackTrace();
			}
			
		}
		
		return flag;
	}
	
	public static void main(String [] args){
		JdbcTestClass tst = new JdbcTestClass();
		
		List<List<Object>> list = tst.testSelect();
		boolean flag = tst.testInsert(list);
		if(flag){
			System.out.println("insert success");
		}else{
			System.out.println("insert fail");
		}
	}
}

 

 

         代码里演示了使用jdbc连接mysql后,从a表插入到b表的情况。

  • 使用批处理形式进行INSERT操作。.
  • 使用了ON DUPLICATE KEY UPDATE 的sql。
  • 使用Object来插入值,免除了对于不同值设置的麻烦。

 

 

 

分享到:
评论

相关推荐

    Java之JDBC连接数据库实现增删改查(2018 使用Dao层实现 完美封装解决硬编码问题)

    Java之JDBC连接数据库实现增删改查(2018 使用Dao层实现 完美封装解决硬编码问题) 配置文件 db.properties(保存数据库账号和密码等) 工具类 JDBCUtil.java(抽取公共部分,解决硬编码问题) 用户账号实体类 User....

    Java之JDBC连接数据库实现增删改查(2018 使用Dao层实现)

    Java之JDBC连接数据库实现增删改查(2018 使用Dao层实现) 实体类:User.java 接口类:IUserDao.java 实现接口类:UserDaoImpl.java 使用Junit4测试增删改查类:UserDaoTest.java

    JDBC连接数据库方法文档

    JDBC 连接数据库方法文档 JDBC(Java Database Connectivity)是 Java 语言中用于连接数据库的标准 API。它提供了一种统一的方式来访问各种类型的数据库,包括关系数据库、对象数据库和文本数据库等。下面是 JDBC ...

    Java之JDBC连接数据库实现增删改查(2018 使用Dao层实现 完美封装解决硬编码问题).rar

    Java之JDBC连接数据库实现增删改查(2018 使用Dao层实现 完美封装解决硬编码问题) 配置文件 db.properties(保存数据库账号和密码等) 工具类 JDBCUtil.java(抽取公共部分,解决硬编码问题) 用户账号实体类 User....

    JDBC连接数据库步骤及代码

    ### JDBC连接数据库步骤详解 #### 一、简介 在Java开发中,经常需要与数据库进行交互,例如查询数据、更新数据等操作。为了方便开发者进行这些操作,Sun公司推出了一套标准的Java访问数据库的API——Java Database...

    jdbc连接数据库步骤

    对于初学者来说,理解JDBC连接数据库的基本步骤至关重要。以下是详细解释这些步骤的知识点: 1. 加载JDBC驱动程序: 在连接数据库之前,首先需要在Java虚拟机(JVM)中加载对应的数据库驱动程序。这一步是通过使用...

    JDBC连接数据库经验总结

    **JDBC连接数据库经验总结** Java Database Connectivity (JDBC) 是Java编程语言中用于与关系数据库交互的标准API。它提供了一种规范,使得Java开发者能够使用标准的Java语句来执行SQL命令,从而实现对数据库的操作...

    jdbc连接数据库事务工厂模式

    在"jdbc连接数据库事务工厂模式"中,我们主要关注三个方面:JDBC、事务管理和工厂模式。 首先,JDBC提供了与数据库交互的基本步骤,包括加载驱动、建立连接、执行SQL语句和关闭连接。例如,使用`Class.forName()`...

    Java之JDBC连接MySQL数据库实现增删改查(2018 使用Dao层实现 完美封装解决硬编码问题 使用预编译对象PreparedStatement)

    Java之JDBC连接数据库实现增删改查(2018 使用Dao层实现 完美封装解决硬编码问题 使用预编译对象PreparedStatement) 配置文件 db.properties(保存数据库账号和密码等) 工具类 JDBCUtil.java(抽取公共部分,解决硬...

    JDBC连接数据库代码大全

    它提供了一种标准的方式来访问和操作数据库,使得开发人员无需关心具体的数据库实现细节,就能执行SQL语句并处理结果。JDBC的核心是通过驱动程序将Java应用程序的SQL语句转换为特定数据库能够理解的命令。 首先,...

    第五章 JDBC连接数据库.pdf

    本章主要针对如何使用JDBC连接Oracle数据库,提供了详细步骤说明,适用于教学及实际开发中的应用。JDBC允许Java程序执行SQL语句,适用于多种关系型数据库,如Oracle、MySQL、SQL Server等。 首先,JDBC连接Oracle...

    完整java开发中JDBC连接数据库代码和步骤

    ### 完整Java开发中JDBC连接数据库代码和步骤 #### 一、概述 在Java开发过程中,通过Java Database Connectivity (JDBC) 连接数据库是非常常见的一种操作方式。JDBC提供了一组标准的API,使得Java应用程序可以访问...

    jdbc测试数据库是否连接成功

    本文将详细介绍如何利用JDBC连接SQL Server 2005,并验证连接是否成功,同时探讨使用SA用户和Windows身份两种不同的认证方式进行连接的方法。 #### 一、JDBC 连接 SQL Server 2005 的基本配置 为了能够顺利地使用...

    JDBC连接实现简单学生管理系统(附数据库).zip

    本项目“JDBC连接实现简单学生管理系统”旨在通过JDBC技术,创建一个能够连接数据库并展示人员信息的管理系统。下面我们将详细探讨JDBC的使用、SQL数据库的操作以及Java在其中的角色。 1. **JDBC基础** JDBC是Java...

    java实例jdbc连接数据库大全.doc

    JDBC连接数据库的基本步骤包括: 1. 加载数据库驱动:`Class.forName(driverClassName);` 2. 创建数据库连接:`Connection conn = DriverManager.getConnection(url, username, password);` 3. 获取Statement或...

    常用的jdbc连接数据库架包jar

    "常用的jdbc连接数据库架包jar"指的是包含不同数据库驱动的Java类库,这些驱动使得Java程序能够通过JDBC API与Oracle、DB2、SQLServer和MySQL等主流数据库建立连接。下面我们将详细探讨这些数据库以及它们对应的JDBC...

    java使用jdbc将数据库数据导出到csv文件.pdf

    Java 是一种广泛使用的编程语言,它提供了多种方式来处理数据库数据,而 JDBC(Java Database Connectivity)是 Java 中连接数据库的标准 API 之一。将数据库数据导出到 CSV 文件是一种常见的数据交换格式,它可以被...

    java JDBC连接数据库代码大全

    ### Java JDBC连接数据库代码大全详解 #### 一、JDBC基础概述 JDBC(Java Database Connectivity)是一种标准的Java API,允许Java程序连接并操作各种类型的数据库。它为开发人员提供了一种统一的方式,以便使用...

Global site tag (gtag.js) - Google Analytics