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连接数据库的更多相关文章

  1. JDBC实例--通过连接工具类DBUtil +配置文件来获取连接数据库,方便又快捷

    根据前面的连接方法,还有缺点就是,如果人家要换数据库,还得改动源代码,然后还要编译什么的.这样客户修改也不容易. 做法:我们写一个配置文件,把该数据写在配置文件上面,然后通过类来加载改文件,然后读取相 ...

  2. JavaWeb——课程管理系统(2).java---18.11.29

    DaoFactory.java package com.jaovo.msg.Util; import com.jaovo.msg.dao.UserDaoImpl; public class DaoFa ...

  3. JAVA JDBC(存储过程和事务管理)

    1.什么是存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程 ...

  4. ArcSDE学习笔记--------增、删、改、查操作

    建立连接 package org.lq.ssm.gp.controller; import com.esri.sde.sdk.client.SeConnection; import com.esri. ...

  5. 利用sorket实现聊天功能-服务端实现

    工具包 package loaderman.im.util; public class Constants { public static final String SERVER_IP = " ...

  6. 链接数据库模板 DataBaseLinkTool

    一. 1.Dao层 对数据库的底层操作  增删改查 package Dao; import java.sql.Connection; import java.sql.ResultSet; import ...

  7. 学生选课系统(Java语言期末前测试)

      测试具体要求: 2.系统要求与功能设计 2.1 页面要求 (1)能够在Tomcat服务器中正确部署,并通过浏览器查看: (2)网站页面整体风格统一: (3)首页(登录页)要求实现不同用户登录后,进 ...

  8. JDBC连接数据库,结合DbUtil数据库连接工具类的使用

    (以Mysql数据库为例) 第一步:在项目里配置数据库驱动 Build Path->configure  Build Path ->Add Exteral JARs   将JDBC驱动包导 ...

  9. 连接数据库工具类DBUtil

    代码如下: import java.io.FileNotFoundException; import java.io.IOException; import java.sql.Connection; ...

随机推荐

  1. 二十,基于K8S集群的PaaS简介

    目录 一.概述 二.生产环境部署k8s,接下来我们描述一下在真正生产环境中我们部署k8s应该部署成什么样子 一.概述 1.通过以往的学习应该可以了解到k8s 和以往提到的devops概念更容易落地了. ...

  2. ContextMenu菜单创建 上下文菜单的基本认识q

    MainActivity.class public class MainActivity extends AppCompatActivity { @Override protected void on ...

  3. mysql存储json

    1. json_merge 合并Json并返回 update `user` set inviteeMap = json_merge(inviteeMap, '{"xx1":100} ...

  4. runloop 小记

    一.什么是runLoop 1.说白了,runloop就是运行循环 2.runloop,他是多线程的法宝 通常来讲,一个线程一次只能执行一个任务,执行完之后就退出线程.但是,对于主线程是不能退出的,因此 ...

  5. solrcloud2

    分片的原因 由于底层Lucene的限制,每个solr索引中包含的文档数不能超过231个,大约是21亿个.但是solr分片一般不是基于这个的原因,因为一般没有到这个峰值的之后,solr的各中性能问题就暴 ...

  6. python_lambda表达式(匿名函数)

    # lambda表达式,为了解决简单函数的情况,如: def func(a1,a2): return a1 + a2 func = lambda a1,a2:a1+a2 # 上面这两个是一样的 def ...

  7. 洛谷P1026 统计单词个数【区间dp】

    题目:https://www.luogu.org/problemnew/show/P1026 题意: 给定一个字符串,要求把他分成k段.给定s个单词,问划分成k段之后每段中包含的单词和最大是多少. 一 ...

  8. Educational Codeforces Round 73 (Rated for Div. 2) A. 2048 Game

    链接: https://codeforces.com/contest/1221/problem/A 题意: You are playing a variation of game 2048. Init ...

  9. MultipartFile类

    MultipartFile类常用的一些方法: String getContentType()//获取文件MIME类型InputStream getInputStream()//后去文件流String ...

  10. Spring中,请求参数处理

    Spring中,Controller里,获取请求数据有多种情况 在使用@RequestParam的方式获取请求中的参数时, 如果没有设置required这个属性,或者主动设置为true,则意味着这个参 ...