java创建数据库

原创 2013年12月05日 12:05:40

在这之前一直都是先在Oracle、MySql等数据库中将数据库、表等操作创建好,再开始编写代码,最近看到一个项目则是通过java代码来执行sql语句来创建数据库这一系列的操作,感觉还是蛮新鲜的,起码对我来说是这样的,接下来将部分的关键代码记录下来,方便后面忘了再回来看看

这里面我用到了c3p0包中的ComboPooledDataSource类和spring中的JdbcTemplate类,在之前对这两个类不了解,这里也借这个机会学习学习这两个类

如果要使用这两个类必须导入c3p0-x.x.xjar好spring.jar包

使用ComboPooledDataSource获取数据源

public DataSource createDataSource(String driver, String url,
			String userName, String password) {
		try {
			//创建ComboPooledDataSource
			ComboPooledDataSource comboPooledDataSource=new ComboPooledDataSource();
			//设置相应参数
			comboPooledDataSource.setDriverClass(driver);
			comboPooledDataSource.setJdbcUrl(url);
			comboPooledDataSource.setUser(userName);
			comboPooledDataSource.setPassword(password);
			//设置最小连接个数
			comboPooledDataSource.setMinPoolSize(5);
			//设置最大连接个数
			comboPooledDataSource.setMaxPoolSize(50);
			//设置最大空闲时间
			comboPooledDataSource.setMaxIdleTime(5000);
			//返回数据源对象
			return comboPooledDataSource;
		} catch (PropertyVetoException e) {
			e.printStackTrace();
		}
		return null;
	}


 

 

测试MySql连接代码

/**
	 * 测试Mysql连接
	 * @return
	 */
	private boolean testMySqlConnection(){
		//数据库驱动
		String driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver";
		//数据库连接
		String conUrl="jdbc:mysql://"+this.url+"/test";
		try {
			//获取数据源对象
			DataSource newDataSource=dataScourceCreate.createDataSource(driverClass, conUrl, userName, password);
			//为jdbcTemplate设置数据源
			this.jdbcTemplate.setDataSource(newDataSource);
			//sql语句--创建数据库
			String sql="CREATE DATABASE IF NOT EXISTS "+this.name+" DEFAULT CHARACTER SET UTF8";
			//执行sql语句
			this.jdbcTemplate.execute(sql);
			//获取数据源--测试刚创建的数据库
			newDataSource=dataScourceCreate.createDataSource(driverClass, "jdbc:mysql://"+this.url+"/"+this.name+"", userName, password);
			this.jdbcTemplate.setDataSource(newDataSource);
			this.jdbcTemplate.execute("use "+this.name);
			this.jdbcTemplate.execute("create table if not exists student(id int not null)");
			this.jdbcTemplate.execute("drop table student");
			return true;
		} catch (DataAccessException e) {
			e.printStackTrace();
			return false;
		}
	}


测试SqlServer连接

/**
	 * 测试SqlServer数据库连接
	 * @return
	 */
	private boolean testSqlServerConnection(){
		//数据库驱动
		String driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver";
		//数据库连接
		String conUrl="jdbc:sqlserver://"+this.url+";databasename=master";
		try {
			//获取数据源对象
			DataSource newDataSource=dataScourceCreate.createDataSource(driverClass, conUrl, userName, password);
			//设置数据源
			this.jdbcTemplate.setDataSource(newDataSource);
			//创建是否存在数据库sql语句
			String sql="if exists(select 1 from sysdatabases where name='"+this.name+"') drop database "+this.name;
			//执行sql语句
			this.jdbcTemplate.execute(sql);
			//获取创建数据库sql语句并执行
			this.jdbcTemplate.execute(sqlUtil.createDataBaseSql(this.name));
			//从新获取数据源--测试刚创建的数据库
			newDataSource=dataScourceCreate.createDataSource(driverClass, "jdbc:sqlserver://"+this.url+";databasename="+this.name, userName, password);
			this.jdbcTemplate.setDataSource(newDataSource);
			this.jdbcTemplate.execute("use "+this.name);
			//执行判断表是否存在
			this.jdbcTemplate.execute("if exists(select 1 from sysobjects where name='test') drop table test");
			//创建表
			this.jdbcTemplate.execute("create table test(id int not null)");
			//删除表
			this.jdbcTemplate.execute("drop table test");
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}


测试Oracle连接

/**
	 * 测试Oracle连接
	 * @return
	 */
	private boolean testOracleConnection(){
		//数据库驱动
		String driverClass="oracle.jdbc.driver.OracleDriver";
		//数据库连接
		String conUrl="jdbc:oracle:thin:@"+this.url+":orcl";
		try {
			//获取数据源对象
			DataSource newDataSource=dataScourceCreate.createDataSource(driverClass, conUrl, "system", password);
			//设置数据源
			this.jdbcTemplate.setDataSource(newDataSource);
			//查询需要创建的用户是否存在
			int result=jdbcTemplate.queryForInt("select count(*) from all_users where USERNAME='"+this.userName.toUpperCase()+"'");
			if(result>0){
				Map map=jdbcTemplate.queryForMap("select sid,serial# from v$session where upper(username)=upper('"+this.userName.toUpperCase()+"')");
				//执行关闭
				jdbcTemplate.execute("alter system kill session '"+map.get("SID")+","+map.get("SERIAL#")+"'");
				//删除用户
				jdbcTemplate.execute("DROP USER "+this.userName.toUpperCase()+" CASCADE");
			}
			//创建用户
			this.jdbcTemplate.execute("CREATE USER "+this.userName+" IDENTIFIED BY "+this.password);
			//给新建用户绑定权限
			this.jdbcTemplate.execute("GRANT CONNECT,RESOURCE TO "+this.userName);
			//连接新创建的用户
			newDataSource=dataScourceCreate.createDataSource(driverClass, conUrl, this.userName, this.password);
			//设置新用户的数据源
			this.jdbcTemplate.setDataSource(newDataSource);
			//查询该用户是否存在表
			result=jdbcTemplate.queryForInt("SELECT count(*) FROM USER_TAB_COMMENTS WHERE TABLE_NAME='TEST'");
			if(result>0){
				//删除表
				this.jdbcTemplate.execute("DROP TABLE TEST");
			}
			//创建表
			this.jdbcTemplate.execute("CREATE TABLE TEST(ID NUMBER NOT NULL)");
			//删除表
			this.jdbcTemplate.execute("DROP TABLE TEST");
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}


关键代码都在这了,目前我只了解这3个数据库,所以也只有这3个了,代码没做优化,如果你们觉得有用,优化就自己弄吧

 

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

相关文章推荐

java代码创建数据库

  • 2015年01月23日 15:25
  • 277KB
  • 下载

java学习之-Derby数据库-第一章(安装和连接,创建)

一、derby数据库的安装和配置 (1)下载derby数据库文件,其实就是几个jar文件和bat文件,点击这里下载derby数据库 (2)找到你的jdk安装路径,比如我的是D:\Program Fil...

Java在HBase数据库创建表

Java在HBase数据库创建表作者:chszs,版权所有,未经同意,不得转载。博主主页:http://blog.csdn.net/chszs要通过Java在HBase中创建一个数据表,首先需要导入h...
  • chszs
  • chszs
  • 2015年08月21日 16:38
  • 7613

java创建MySQL数据库连接池(未完)

注意,java接口是在win7下,MySQL是在RHEL下。 原理: 进程池的定义: 1、首先定义了一个ConnectionPool类: 重要的一个定义:private Vector conn...

JAVA 创建各种数据库连接

MySQL:        String Driver="com.mysql.jdbc.Driver";    //驱动程序     String URL="jdbc:mysql://localh...

Java连接HBASE数据库,创建一个表,删除一张表,修改表,输出插入,修改,数据删除,数据获取,显示表信息,过滤查询,分页查询,地理hash

准备工作 1、创建Java的Maven项目 创建好的目录结构如下: 另外注意junit的版本,最好不要太高,最开始笔者使用的junit4.12的,发现运行的时候会报错。最后把Junit的版本改成...

hibernate反向工程步骤(由数据库表创建java实体类)

hibernate反向工程步骤(由数据库表创建java实体类)

JAVA连接mysql数据库,动态创建表以及动态插入数据

JAVA连接mysql数据库,动态创建表以及动态插入数据 2014-09-22 17:31 0人阅读 评论(0) 收藏 编辑 删除 mysqljava实例数据库 首先,连接数...

java 操作mysql的创建数据库及数据的增删改查

1.用java创建数据库,但是这种动态创建数据库是非主流的。一般不会这样操作。import java.sql.*;public class Test { public static void ...
  • xummgg
  • xummgg
  • 2016年09月01日 13:19
  • 2334

java 通过连接池来创建连接数据库

一.创建类 package com.ytcd.dao; import java.sql.CallableStatement; import java.sql.Connection; i...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java创建数据库
举报原因:
原因补充:

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