码迷,mamicode.com
首页 > 数据库 > 详细

连接数据库的方法

时间:2015-10-15 20:19:10      阅读:328      评论:0      收藏:0      [点我收藏+]

标签:

1、使用工具类及其配置文件的方法,连接后台的数据库

【优点:可以连接不同的数据库,对数据库的类型进行了逐一的设置】

【缺点:对数据库操作的sql语句的编写,比较单一,当进行数据库表操作时,sql语句需要写在相应的方法内,当出错时,改起来不好找,比较麻烦】

init.properties数据库的相关属性对象的配置

ip=127.0.0.1      //ip地址
port=1433         //端口号
dbtype=sqlServer     //数据库类型
dbname=fdx        //数据库名
username=sa       //用户名
password=abc1234565  //密码

  

DBUtils工具类【连接数据库的工具包】

package com.fdx.Utils;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

public class DBUtils {
	private static Properties p = new Properties();
	static{
		try {
			p.load(DBUtils.class.getResourceAsStream("init.properties"));
		} catch (IOException e) {
			// TODO Auto-generated catch block
			System.out.println("没有找到配置文件");
		}
	}
	//创建连接数据库连接
	public static Connection getConnection() {
		Connection conn = null;
		String ip = p.getProperty("ip").trim().toLowerCase();
		String port = p.getProperty("port").trim().toLowerCase();
		String dbname = p.getProperty("dbname").trim().toLowerCase();
		String dbtype = p.getProperty("dbtype").trim().toLowerCase();
		String username = p.getProperty("username").trim().toLowerCase();
		String password = p.getProperty("password").trim().toLowerCase();

       /**
        *根据dbtype的不同,选择不同的数据库类型
        *
        /
if (dbtype.equals("oracle")) {//连接Oracle数据库 try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { System.out.println("驱动类没找到"+e.getMessage()); } //获取连接对象 StringBuffer url = new StringBuffer(); url.append("jdbc:oracle:thin:@"); url.append(ip); url.append(":"); url.append(port); url.append(":"); url.append(dbname); try { conn= DriverManager.getConnection(url.toString(),username,password); } catch (SQLException e) { System.out.println("数据库连接项错误"); } } if (dbtype.equals("mysql")) {//连接MySQL数据库
          //MySql数据库的url是这个样子的:
          //jdbc:mysql://localhost:3306/mysql?characterEncoding=utf8
            try {
				Class.forName("org.gjt.mm.mysql.Driver");
			} catch (ClassNotFoundException e) {
				System.out.println("驱动类没找到"+e.getMessage());
			}
			//获取连接对象
			StringBuffer url = new StringBuffer();
			url.append("jdbc:mysql://");
			url.append(ip);
			url.append(":");
			url.append(port);
			url.append("/");
			url.append(dbname);
			 try {
				conn= DriverManager.getConnection(url.toString(),username,password);
			} catch (SQLException e) {
				System.out.println("数据库连接项错误");
			} 
           } if (dbtype.equals("sqlserver")) {
              //连接SqlServer数据库,url路径格式是一定的:jdbc_url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=fdx
              //其中端口号后面必须使用分号,使用其他的是行不通的 try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch (ClassNotFoundException e) { System.out.println("驱动类没找到"+e.getMessage()); } //获取连接对象 StringBuffer url = new StringBuffer(); url.append("jdbc:sqlserver://"); url.append(ip); url.append(":"); url.append(port); url.append(";");
              url.append("DatabaseName="); url.append(dbname); try { conn= DriverManager.getConnection(url.toString(),username,password); } catch (SQLException e) { System.out.println("数据库连接项错误"); } } return conn; } //关闭数据库中的连接对象 public static void close(Connection conn,PreparedStatement pstat,ResultSet rs){ if(conn != null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(pstat != null){ try { pstat.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(rs != null){ try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }

  

方法二:使用Spring+iBatis框架的方式,专门有一个XXXsqlMap.xml配置文件,专门放sql语句的文件,设计到sql语句的方法中,直接调用即可【自己测试的有dao接口,其中的方法名要与sqlMap中的sql语句的id值相一致的,这样子才可以与后台数据库建立联系;】

--------{实体类、实体类sqlMap配置文件,都可以直接生成出来的,具体直接生成的方式,待续中,,,,,}

连接数据库的属性对象配置文件config.properties

driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
validationQuery=SELECT 1
jdbc_url=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=fdx
jdbc_username=sa
jdbc_password=abc123456

然后再在spring-mybatis.xml配置文件中,配置有关连接数据库的相关信息【即数据源】

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
	  <property name="driverClassName" value="${driverClassName}"></property>
		<property name="url" value="${jdbc_url}" />
		<property name="username" value="${jdbc_username}" />
		<property name="password" value="${jdbc_password}" />
......

 在相应的sqlMap配置文件中配置有关的sql语句

  ......

dao接口中,方法名要与sqlMap配置文件中的sql的id值相一致的【切记】

比如:

public interface UserDao {
	// 根据id查询用户信息(ok)
	public User selectByPrimaryKey(String id);

	// 查询所有信息(ok)
	public List<User> getAll();

	// 查询最大id值(ok)
	public String selectMaxId();

	// 删除用户信息【根据id】(ok)
	public void deleteByPrimaryKey(String id);

	// 插入用户信息(ok)
	public void insert(User user);

	// 有选择性的插入操作(ok)
	public void insertSelective(User user);

  service业务逻辑接口

public interface UserService {
	public User getUserById(String id);//(ok)
//	public void deleteById(String id);//(ok)
	public void insertUser(User user);//(ok)
	public List<User> getAllUser();//(ok)
//	public void update(User user);//(ok)根据id修改用户密码,姓名,角色,生日
	public void insertSelect(User user);//选择性的插入操作(ok)

  serviceImpl实现类

package fdx.service;


import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import fdx.dao.UserDao;
import fdx.model.User;
import fdx.service.UserService;

@Service("userService")
public class UserServiceImpl implements UserService {
	
	private UserDao userDao;
	
	public UserDao getUserDao() {
		return userDao;
	}
	@Autowired
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
	//根据id查询用户信息(ok)
	public User getUserById(String id) {
		return userDao.selectByPrimaryKey(id);
	}
	//根据id删除用户信息
	public void deleteById(String id) {
		System.out.println("删除用户id"+id);
		System.out.println("用户信息的名字:"+userDao.selectByPrimaryKey(id).getName());
		userDao.deleteByPrimaryKey(id);
		System.out.println("已删除成功!!");
	}
	//插入用户信息,主键自动增长(ok)
	public void insertUser(User user) {
		//调用方法,获取到最大的id值
		String id = userDao.selectMaxId();
		System.out.println("获取到的最大id值:"+id);
		int num = Integer.parseInt(id.trim());//再没有trim()方法时,出现异常;Integer.parseInt(str),参数只能是纯数字的组合才能转换,所以使用trim()方法,进行去除一下空格;且得到的id值里面有空格的存在;
		num = num +1;
		//将数字转换成字符串格式
		String sid = String.valueOf(num);
		//对主键id,出生日期(获取到当前系统的日期)进行设置;
		user.setId(sid);
		user.setBirth(new Date());
		userDao.insert(user);
		System.out.println("插入之后:测试成功");
	}
	//查询所有用户信息(ok)
	public List<User> getAllUser() {
		List<User> list = null;
		list = userDao.getAll();
		return list;
	}
}

  进行JUnit测试【模块式的测试方式】

package fdx.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import org.junit.Test;
import org.junit.runner.Request;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import sun.applet.Main;
import fdx.model.User;
import fdx.service.UserService;

public class TestMy {
	@Test
	public void test(){
		ApplicationContext ac = new ClassPathXmlApplicationContext(new String[] { "spring.xml", "spring-mybatis.xml"});
		UserService us = (UserService) ac.getBean("userService");
		//根据id查询用户
//		System.out.println(us);
		User u = us.getUserById("1002");
		SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
		System.out.println(u.getId()+u.getName()+u.getPwd()+sf.format(u.getBirth()));	
    }
}

 其中spring.xml配置文件中相应的内容:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
">

	<!-- 引入属性文件,用于连接数据库、classpath表示的是src/main/resources目录下 -->
	<context:property-placeholder location="classpath:config.properties" />

	<!-- 自动扫描(自动注入) ,扫描相应的service包-->
	<context:component-scan base-package="fdx.service" />
	<context:annotation-config/>

</beans>

 

 得到的结果是:

1002                          hahah                                   000000                                  2015-09-24

  【接触到的项目,使用的也是SSI框架,其中与数据库的连接,对后台数据库进行的操作,也是使用的sqlMap配置文件配置sql语句,然而不同的是,她们封装好的类用来获取sqlMap中sql的id值,进而得到相应的sql语句,直接调用类中的方法就可以得到想要的sql语句。,进而实现对后台数据库进行相应的操作!!!

 

连接数据库的方法

标签:

原文地址:http://www.cnblogs.com/FanSunny/p/4883090.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!