Java连接各种数据库(sql server ,mysql,oracle)以及相关易错点

一.java连接数据库源代码

(1)连接获得Connection对象

package db;

import java.sql.*;


public class DataBaseConnection {

    Connection con = null;

    // 数据库连接方法
    public Connection getConn() {
        try {
            Class.forName("com.mysql.jdbc.Driver");

//sql server改为:

//Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            con = DriverManager.getConnection("jdbc:mysql://localhost/kb_test?useUnicode=true&characterEncoding=utf8",
                    "root", "123456");

 //sql server代码为:

//con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=数据库名字","账号", "密码");

扫描二维码关注公众号,回复: 3065717 查看本文章

//Oracle 改为:

connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:默认数据库名", "账号", "密码");

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return con;
    }

    // 数据库连接方法
    public Connection getConn_104() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            con = DriverManager.getConnection(
                    "jdbc:mysql://192.68.68.104/kb_test?useUnicode=true&characterEncoding=utf8", "test", "test");
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return con;
    }

    // 数据库关闭方法
    public void close() {
        try {
            con.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

二.利用数据库DataBaseConnection类进行增删查改

package dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import dao.UserDao;
import db.DataBaseConnection;
import entity.User;

public class UserDaoImpl implements UserDao {

 
    public void insert(User user) {
        // TODO Auto-generated method stub
        //数据库连接
        DataBaseConnection dbc = new DataBaseConnection(); 
        Connection con=dbc.getConn();
        PreparedStatement pstmt=null;
        //执行sql语句
        String sql ="insert into customerinfo (id,password,name,sex,address,code) values(?,?,?,?,?,?)";

        try {
            pstmt = con.prepareStatement(sql) ;  //发送sql语句,删除书籍基本信息
            pstmt.setString(1,user.getId()) ;
            pstmt.setString(2,user.getPassword()) ;
            pstmt.setString(3,user.getName()) ;
            pstmt.setString(4,user.getSex()) ;
            pstmt.setString(5,user.getAddress()) ;
            pstmt.setString(6,user.getCode()) ;
            pstmt.executeUpdate();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally{
            try {
                con.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

  
    public void updata(User user) {
        // TODO Auto-generated method stub
        String sql = "UPDATE customerinfo SET id=?,password=?,name=?,sex=?,address=?,code=? WHERE id=?" ;
        DataBaseConnection dbc = new DataBaseConnection();
        Connection con=dbc.getConn();
        PreparedStatement pstmt=null;
        try
        {
            pstmt = dbc.getConn().prepareStatement(sql) ;                
            pstmt.setString(1,user.getId());
            pstmt.setString(2,user.getPassword());
            pstmt.setString(3,user.getName()) ;
            pstmt.setString(4,user.getSex());
            pstmt.setString(5,user.getAddress());
            pstmt.setString(6,user.getCode()) ;
            pstmt.setString(7,user.getId()) ;
            pstmt.executeUpdate() ;
            pstmt.close() ;
        }
        catch (Exception e)
        {
            try {
                //throw new Exception("操作中出现错误!!!") ;
            } catch (Exception e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
        finally
        {
            dbc.close() ;
        }
    }


    public void delete(String id) {
        // TODO Auto-generated method stub
        String sql = "DELETE FROM customerinfo WHERE id=?" ;
        PreparedStatement pstmt = null ;
        DataBaseConnection dbc = new DataBaseConnection() ;
        try
        {
            pstmt = dbc.getConn().prepareStatement(sql) ;
            pstmt.setString(1,id) ;
            pstmt.executeUpdate() ;
            pstmt.close() ;
        }
        catch (Exception e)
        {
            try {
                throw new Exception("操作中出现错误!!!") ;
            } catch (Exception e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
        finally
        {
            dbc.close() ;
        }
    }

    
    public User queryById(String id) {
        // TODO Auto-generated method stub
        User user = new User() ;
        String sql = "SELECT * FROM customerinfo WHERE id=?" ;
        PreparedStatement pstmt = null ;
        DataBaseConnection dbc =new DataBaseConnection() ;
        try
        {
            pstmt = dbc.getConn().prepareStatement(sql) ;
            pstmt.setString(1,id) ;
            ResultSet rs = pstmt.executeQuery() ;
            if (rs.next()){             
                user.setId(rs.getString("id")) ;
                user.setPassword(rs.getString("password"));
                user.setName(rs.getString("name"));
                user.setSex(rs.getString("sex"));
                user.setAddress(rs.getString("address"));
                user.setCode(rs.getString("code"));
                user.setIndex(Integer.parseInt(rs.getString("index")));        
            }
            rs.close() ;
            pstmt.close() ;
        }
        catch (Exception e)
        {
            System.out.print(e);
            e.printStackTrace();

        }
        finally
        {
            dbc.close() ;
        }
        return user ;
    }

   
    public List query() {
        // TODO Auto-generated method stub
        List all = new ArrayList() ;
        //连接数据库
        DataBaseConnection dbc = new DataBaseConnection();
        Connection con=dbc.getConn();
        //执行sql语句
        String sql = "SELECT * FROM customerinfo" ;
        PreparedStatement pstmt;
        try
        {        
            pstmt = con.prepareStatement(sql);
            ResultSet rs = pstmt.executeQuery();
            while(rs.next())
            {
                User user= new User();
                user.setId(rs.getString("id")) ;
                user.setName(rs.getString("name"));
                user.setPassword(rs.getString("password"));
                user.setSex(rs.getString("sex"));
                user.setAddress(rs.getString("address"));
                user.setCode(rs.getString("code"));
                user.setIndex(Integer.parseInt(rs.getString("index")));
                all.add(user) ;
            }
            rs.close() ;
            pstmt.close() ;
            con.close();
        }
        catch (Exception e)
        {
            System.out.println(e) ;
            try {
                throw new Exception("操作中出现错误!!!") ;
            } catch (Exception e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
        finally
        {
            dbc.close() ;
        }
        return all ;
    }

  
    public void PLdelete(String[] id) {
        // TODO Auto-generated method stub
        //连接数据库
        DataBaseConnection dbc = new DataBaseConnection();
        Connection con=dbc.getConn();
        for(int i=0;i<id.length;i++){
            String command="DELETE FROM customerinfo WHERE id=?";   //每次删除一个用户的基本信息
            PreparedStatement pstmt = null; 
            System.out.println(id.length);
            System.out.println(id[i]);
            try {
                pstmt = con.prepareStatement(command);
                pstmt.setString(1,id[i]) ;
                pstmt.executeUpdate();    
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }                //发送sql语句,删除用户基本信息    

        }    
        try {
            con.close();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

  
    public boolean user(User admin) {
        // TODO Auto-generated method stub
        DataBaseConnection db = new DataBaseConnection();
        Connection con =db.getConn();
        //  使用PreparedStatement对象发送sql语句
        String query = "SELECT * FROM customerinfo WHERE id=? and password=?";
        PreparedStatement pstmt = null; //创建PreparedStatement对象
        try {
            pstmt = con.prepareStatement(query);
            pstmt.setString(1, admin.getId());
            pstmt.setString(2, admin.getPassword());

            ResultSet resultset = pstmt.executeQuery(); //得到结果集    
            if(resultset.next())return true;
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally{
            try {
                con.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        return false;
    }

   
    public boolean idIsExist(String id) {
        User user = new User() ;
        String sql = "SELECT * FROM customerinfo WHERE id=?" ;
        PreparedStatement pstmt = null ;
        DataBaseConnection dbc =new DataBaseConnection() ;
        try
        {
            pstmt = dbc.getConn().prepareStatement(sql) ;
            pstmt.setString(1,id) ;
            ResultSet rs = pstmt.executeQuery() ;
            if (rs.next()){             
                user.setId(rs.getString("id")) ;
                user.setPassword(rs.getString("password"));
                user.setName(rs.getString("name"));
                user.setSex(rs.getString("sex"));
                user.setAddress(rs.getString("address"));
                user.setCode(rs.getString("code"));
                user.setIndex(Integer.parseInt(rs.getString("index")));
                return true;
            }
            rs.close() ;
            pstmt.close() ;
        }
        catch (Exception e)
        {
            System.out.print(e);
            e.printStackTrace();

        }
        finally
        {
            dbc.close() ;
        }        
        return false;  
    }

    public List queryLike(String id){
        // TODO Auto-generated method stub
        List all = new ArrayList() ;
        //连接数据库
        DataBaseConnection dbc = new DataBaseConnection();
        Connection con=dbc.getConn();
        //执行sql语句
        String sql = "SELECT * FROM customerinfo where id  LIKE '%"+id+"%'" ;
        PreparedStatement pstmt;
        try
        {        
            pstmt = con.prepareStatement(sql);
            ResultSet rs = pstmt.executeQuery();
            while(rs.next())
            {
                User user= new User();
                user.setId(rs.getString("id")) ;
                user.setName(rs.getString("password"));
                user.setPassword(rs.getString("name"));
                user.setSex(rs.getString("sex"));
                user.setAddress(rs.getString("address"));
                user.setCode(rs.getString("code"));
                user.setIndex(Integer.parseInt(rs.getString("index")));
                all.add(user) ;
            }
            rs.close() ;
            pstmt.close() ;
            con.close();
        }
        catch (Exception e)
        {
            System.out.println(e) ;
            try {
                throw new Exception("操作中出现错误!!!") ;
            } catch (Exception e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
        finally
        {
            dbc.close() ;
        }
        return all ;
    }
}
三.进行数据库操作的易错点

(1)出现如图错误:

未添加链接驱动

(2)使用Mybitis、hibernate等框架连接数据库报错:

报错原因是数据库驱动版本问题,数据库连接驱动和对应框架的版本不同,应该更改驱动jar的版本

(3).

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column

原因:Sting类型没有加单引号

(4).

Duplicate entry '1' for key 'PRIMARY'

原因,主键值存在或混乱,要先删除数据或者清空表

(5).

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'password' in

原因:可能输入的值的类型不对,确定是否插入的元素时对应的值的类型正确

(6).

Data truncated for column 'Prices' at row 1

原因:数据过长导致被截断,注意对应值的类型与长度限制——一般把长度调高一点就可以了

 (7).乱码现象

private static String dbUrl="jdbc:mysql://localhost:3306/db_book2?useUnicode=true&characterEncoding=utf-8";

(8).文件名或目录出错

String str="C:\\152.txt"; 
String location=str.replace("\\\\", "/"); 
File context=new File(location);

猜你喜欢

转载自blog.csdn.net/qq_37284798/article/details/82221850