DBUtil连接数据库
1、 SQL server连接:
数据库不同架包就不同
SQL server 使用的架包是(sqljdbc4.jar)
2、 Mysql (MariaDB同理)
SQL server 使用的架包是(mysql-connector-java-5.1.17-bin.jar)
- DBDRIVER = "com.mysql.jdbc.Driver";
- DBURL = "jdbc:mysql://localhost:3306/mobilephonedb";
- DBUID = "root";
- DBPWD = "";
关于mysql后台写入数据乱码问题解决方式:
- DBURL = "jdbc:mysql://localhost:3306/bookdb?useUnicode=true&characterEncoding=utf-8&";
因为java没有告诉mysql传过来的是什么类型的数据。
3、sqlite
SQL server 使用的架包是(sqlite-jdbc-3.21.0.jar)
- DBDRIVER = "org.sqlite.JDBC";
- //这里使用的是绝对路径
- DBURL = "jdbc:sqlite:D:\\myphone.db";
下面是工具类
- package com.dz.product.dao;
- import java.io.IOException;
- import java.io.InputStream;
- import java.sql.*;
- import java.text.ParsePosition;
- import java.text.SimpleDateFormat;
- import java.util.*;
- import java.util.Date;
- public class DBUtil {
- //连接对象
- //Statement 命令对象
- //打开连接
- //关闭连接
- //得到一个连接对象
- //查询(有参,无参)
- //修改(有参,无参)
- static Connection conn = null;
- static Statement stmt = null;
- static PreparedStatement pstmt=null;
- //驱动,服务器地址,登录用户名,密码
- static String DBDRIVER;
- static String DBURL;
- static String DBUID;
- static String DBPWD;
- static {
- DBDRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
- DBURL = "jdbc:sqlserver://localhost:1433;databasename=YerGoMallPro";
- DBUID = "sa";
- //DBPWD = "@zdm168168...";
- DBPWD = "123456";//打开连接
}- public static void open() {
- //加载驱动
- try {
- Class.forName(DBDRIVER);
- conn=DriverManager.getConnection(DBURL,DBUID,DBPWD);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- //关闭连接
- public static void close() {
- try {
- if(stmt!=null)
- stmt.close();
- if(conn!=null && !conn.isClosed())
- conn.close();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- //得到一个连接对象,当用户使用DBUtil无法解决个性问题时
- //可以通过本方法获得连接对象
- public static Connection getConnection() {
- try {
- if(conn==null ||conn.isClosed())
- open();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- return conn;
- }
- //executeQuery
- //executeUpdate
- //execute
- //获得查询的数据集
- //select * from student where name='' and sex=''
- public static ResultSet executeQuery(String sql) {
- try {
- open();//保证连接是成功的
- stmt = conn.createStatement();
- return stmt.executeQuery(sql);
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return null;
- }
- //修改表格内容
- public static int executeUpdate(String sql) {
- int result = 0;
- try {
- open();//保证连接是成功的
- stmt = conn.createStatement();
- result = stmt.executeUpdate(sql);
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } finally {
- close();
- }
- return result;
- }
- //如果执行的查询或存储过程,会返回多个数据集,或多个执行成功记录数
- //可以调用本方法,返回的结果,
- //是一个List<ResultSet>或List<Integer>集合
- public static Object execute(String sql) {
- boolean b=false;
- try {
- open();//保证连接是成功的
- stmt = conn.createStatement();
- b = stmt.execute(sql);
- //true,执行的是一个查询语句,我们可以得到一个数据集
- //false,执行的是一个修改语句,我们可以得到一个执行成功的记录数
- if(b){
- return stmt.getResultSet();
- }
- else {
- return stmt.getUpdateCount();
- }
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } finally {
- if(!b) {
- close();
- }
- }
- return null;
- }
- //
- //select * from student where name=? and sex=?
- public static ResultSet executeQuery(String sql,Object[] in) {
- try {
- open();//保证连接是成功的
- PreparedStatement pst = conn.prepareStatement(sql);
- for(int i=0;i<in.length;i++)
- pst.setObject(i+1, in[i]);
- stmt = pst;//只是为了关闭命令对象pst
- return pst.executeQuery();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return null;
- }
- public static int executeUpdate(String sql,Object[] in) {
- try {
- open();//保证连接是成功的
- PreparedStatement pst = conn.prepareStatement(sql);
- for(int i=0;i<in.length;i++)
- pst.setObject(i+1, in[i]);
- stmt = pst;//只是为了关闭命令对象pst
- return pst.executeUpdate();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }finally {
- close();
- }
- return 0;
- }
- public static PreparedStatement pstmt(String sql){
- open();
- try {
- return pstmt = conn.prepareStatement(sql);
- } catch (SQLException e) {
- // TODO 自动生成的 catch 块
- e.printStackTrace();
- }
- return null;
- }
- public static Object execute(String sql,Object[] in) {
- boolean b=false;
- try {
- open();//保证连接是成功的
- PreparedStatement pst = conn.prepareStatement(sql);
- for(int i=0;i<in.length;i++)
- pst.setObject(i+1, in[i]);
- b = pst.execute();
- //true,执行的是一个查询语句,我们可以得到一个数据集
- //false,执行的是一个修改语句,我们可以得到一个执行成功的记录数
- if(b){
- System.out.println("----");
- /*List<ResultSet> list = new ArrayList<ResultSet>();
- list.add(pst.getResultSet());
- while(pst.getMoreResults()) {
- list.add(pst.getResultSet());
- }*/
- return pst.getResultSet();
- }
- else {
- System.out.println("****");
- List<Integer> list = new ArrayList<Integer>();
- list.add(pst.getUpdateCount());
- while(pst.getMoreResults()) {
- list.add(pst.getUpdateCount());
- }
- return list;
- }
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } finally {
- if(!b) {
- System.out.println("====");
- close();
- }
- }
- return null;
- }
- //调用存储过程 proc_Insert(?,?,?)
- public static Object executeProcedure(String procName,Object[] in) {
- open();
- try {
- procName = "{call "+procName+"(";
- String link="";
- for(int i=0;i<in.length;i++) {
- procName+=link+"?";
- link=",";
- }
- procName+=")}";
- CallableStatement cstmt = conn.prepareCall(procName);
- for(int i=0;i<in.length;i++) {
- cstmt.setObject(i+1, in[i]);
- }
- if(cstmt.execute())
- {
- return cstmt.getResultSet();
- }
- else {
- return cstmt.getUpdateCount();
- }
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return null;
- }
- /*
- * 调用存储过程,并有输出参数
- * @procName ,存储过程名称:proc_Insert(?,?)
- * @in ,输入参数集合
- * @output,输出参数集合
- * @type,输出参数类型集合
- * */
- public static Object executeOutputProcedure(String procName,
- Object[] in,Object[] output,int[] type){
- Object result = null;
- try {
- CallableStatement cstmt = conn.prepareCall("{call "+procName+"}");
- //设置存储过程的参数值
- int i=0;
- for(;i<in.length;i++){//设置输入参数
- cstmt.setObject(i+1, in[i]);
- //print(i+1);
- }
- int len = output.length+i;
- for(;i<len;i++){//设置输出参数
- cstmt.registerOutParameter(i+1,type[i-in.length]);
- //print(i+1);
- }
- boolean b = cstmt.execute();
- //获取输出参数的值
- for(i=in.length;i<output.length+in.length;i++)
- output[i-in.length] = cstmt.getObject(i+1);
- if(b) {
- result = cstmt.getResultSet();
- }
- else {
- result = cstmt.getUpdateCount();
- }
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return result;
- }
- //时间转换
- public static Date date(String date_str) {
- try {
- Calendar cal = Calendar.getInstance();//日期类
- Timestamp timestampnow = new Timestamp(cal.getTimeInMillis());//转换成正常的日期格式
- SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");//改为需要的东西
- ParsePosition pos = new ParsePosition(0);
- java.util.Date current = formatter.parse(date_str, pos);
- timestampnow = new Timestamp(current.getTime());
- return timestampnow;
- }
- catch (NullPointerException e) {
- return null;
- }
- };
- }
DBUtil连接数据库的更多相关文章
- JDBC实例--通过连接工具类DBUtil +配置文件来获取连接数据库,方便又快捷
根据前面的连接方法,还有缺点就是,如果人家要换数据库,还得改动源代码,然后还要编译什么的.这样客户修改也不容易. 做法:我们写一个配置文件,把该数据写在配置文件上面,然后通过类来加载改文件,然后读取相 ...
- JavaWeb——课程管理系统(2).java---18.11.29
DaoFactory.java package com.jaovo.msg.Util; import com.jaovo.msg.dao.UserDaoImpl; public class DaoFa ...
- JAVA JDBC(存储过程和事务管理)
1.什么是存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程 ...
- ArcSDE学习笔记--------增、删、改、查操作
建立连接 package org.lq.ssm.gp.controller; import com.esri.sde.sdk.client.SeConnection; import com.esri. ...
- 利用sorket实现聊天功能-服务端实现
工具包 package loaderman.im.util; public class Constants { public static final String SERVER_IP = " ...
- 链接数据库模板 DataBaseLinkTool
一. 1.Dao层 对数据库的底层操作 增删改查 package Dao; import java.sql.Connection; import java.sql.ResultSet; import ...
- 学生选课系统(Java语言期末前测试)
测试具体要求: 2.系统要求与功能设计 2.1 页面要求 (1)能够在Tomcat服务器中正确部署,并通过浏览器查看: (2)网站页面整体风格统一: (3)首页(登录页)要求实现不同用户登录后,进 ...
- JDBC连接数据库,结合DbUtil数据库连接工具类的使用
(以Mysql数据库为例) 第一步:在项目里配置数据库驱动 Build Path->configure Build Path ->Add Exteral JARs 将JDBC驱动包导 ...
- 连接数据库工具类DBUtil
代码如下: import java.io.FileNotFoundException; import java.io.IOException; import java.sql.Connection; ...
随机推荐
- K8S搭建过程随笔_系统初始化
组件 Kubernetes 1.14.2 Docker 18.09.6-ce Etcd 3.3.13 Flanneld 0.11.0 基础环境设置 192.168.11.188 k8s-master ...
- sklearn--模型的评价
sklearn.metrics 1.MSE(均方误差)和RMSE(均方根误差),以及score() lr.score(test_x,test_y)#越接近1越好,负的很差 from sklearn.m ...
- linux kill某一用户的所有tomcat进程
1.查看Tomcat进程 ps -ef|grep tomcat 显示当前所有进程: ps -ef|grep tomcat-web 进程中有不同的进程,查询全名,精准kill. 2.根据进程号kil ...
- iFrame跨域的方式
4种通过iframe跨域与其他页面通信的方式 不同域下的iframe不能进行操作. 1.location.hash: 在url中,http://www.baidu.com#helloword的#hel ...
- 【django】另一种思路代替nginx 的rewrite
需求:访问xx.com 跳转到xx.com/index 修改setting 同级别的urls.py 文件 from django.conf.urls import include, url from ...
- TestNG-Annotations
@BeforeSuite The annotated method will be run before all tests in this suite have run. @AfterSuite ...
- 【转】GO语言map类型interface{}转换踩坑小记
原文:https://www.az1314.cn/art/69 ------------------------------------------ mapA := make([string]inte ...
- Spring入门篇——第6章 Spring AOP的API介绍
第6章 Spring AOP的API介绍 主要介绍Spring AOP中常用的API. 6-1 Spring AOP API的Pointcut.advice概念及应用 映射方法是sa开头的所有方法 如 ...
- 根据xml文件生成javaBean
原 根据xml文件生成javaBean 2017年08月15日 18:32:26 吃完喝完嚼益达 阅读数 1727 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出 ...
- OpenSSL 通过OCSP手动验证证书
翻译:https://raymii.org/s/articles/OpenSSL_Manually_Verify_a_certificate_against_an_OCSP.html?utm_sour ...