zoukankan      html  css  js  c++  java
  • javaweb之mysql数据库与jdbc(1)

    ---恢复内容开始---

      我之前一直想在自己搭建的博客上记录自己的学习历程,由于知识的欠缺,这条路没了尽头最准决定注册一个博客,记录自己的学习历程,以便于以后复习,也可以通过博客和更多的人交流,共同进步。这也是我第一次写博客,有不足之处望指正。(之前学过的有关于Java的知识会后期补充上来)

    MySql与JDBC

    JDBC

     a、JDBC(Java DataBase Connectivity): SUN公司提供的一种数据库访问规则、规范, 由于数据库种类较多,并且java语言使用比较广泛,sun公司就提供了一种规范,让其他的数据库提供商去实现底层的访问规则。 我们的java程序只要使用sun公司提供的jdbc驱动即可。

     b、使用JDBC的基本步骤(掌握):

    (1)注册驱动:

    DriverManager.registerDriver(new com.mysql.jdbc.Driver());
    View Code

    (2)建立连接:

        //DriverManager.getConnection("jdbc:mysql://localhost/test?user=monty&password=greatsqldb");(第一种方法)
    
               conn = DriverManager.getConnection("jdbc:mysql://localhost/student", "root", "root");(第二种方法)
    
        注:localhost:表示本机;
               student:数据库名;
               root依次为:用户名、密码
    View Code

    (3)创建statement:

    st = conn.createStatement();
    View Code

    (4)执行sql 语句,得到ResultSet:

    String sql = "select * from t_stu";
    rs = st.executeQuery(sql);
        注:t_stu为数据库中的表名
    View Code

    (5)遍历每一条记录:

    while(rs.next()){
                   int id = rs.getInt("id");
                   String name = rs.getString("name");
                   int age = rs.getInt("age");
                   System.out.println("id="+id + "===name="+name+"==age="+age);
                   
    View Code

    (6)释放内存:

    if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException sqlEx) { } // ignore 
                rs = null;
            }
    View Code

        完整代码实例:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class demo2 {
        /**
         * @param args
         *JDBC入门事例
         */
        public static void main(String[] args) {
            Connection conn =null;
            Statement st = null;
            ResultSet rs = null;
            try {
                //1、注册驱动
                //DriverManager.registerDriver(new com.mysql.jdbc.Driver());//在mysql4.0之后可以不用注册驱动
                //2、建立连接
                conn = DriverManager.getConnection("jdbc:mysql://localhost/student", "root", "12345");
                //3、声明Statement
                st = conn.createStatement();
                //4、创建ResultSet
                String sql  = "select * from info";
                rs = st.executeQuery(sql);
                //5、遍历结果
                while(rs.next()){
                    int id = rs.getInt("id");
                    String name = rs.getString("name");
                    int age = rs.getInt("age");
                    System.out.println("id:"+id+"name:"+name+"age"+age);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                //6、释放资源
                if(rs !=null)
                {
                    try {
                        rs.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if(st !=null)
                {
                    try {
                        st.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if(st !=null)
                {
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }    
            }
        }
    }

     以上代码实现了java连接mysql数据库的功能,为了提高代码的复用性,需要对代码进行优化吗,生成一个工具类,减少代码冗余,方便以后调用。

    优化后的代码:(该类对数据库的连接做了一个简单的封装)

    package java_jdbc_util;
    
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Properties;//注意导入的包
    
    @SuppressWarnings("unused")
    public class JdbcUtil {
        static String driverClass = null;
        static String url = null;
        static String name = null;
        static String passwd= null;
        //创建静态代码块,当类加载完成时读取配置文件
        static {
            try {
                Properties properties = new Properties();
                //InputStream is = new FileInputStream("jdbc.properties");//当配置文件放在项目根目录时使用方法读取
                //使用类加载器,去读取src底下的资源文件。 
                InputStream is = JdbcUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
                try {
                    properties.load(is);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                //读取属性
                driverClass = properties.getProperty("driverClass");
                url = properties.getProperty("url");
                name = properties.getProperty("username");
                passwd = properties.getProperty("passwd");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        //创建连接数据库方法,返回Connection对象
        public static Connection getConn(){
            Connection conn = null;
            try {    
                Class.forName(driverClass);
                //DriverManager.registerDriver(driverClass);//加载mysql驱动
                conn = DriverManager.getConnection(url, name, passwd);
                
            } catch (Exception e) {
                e.printStackTrace();
            }
            return conn;
        }
        //对外提供一个public方法,调用三个私有方法
        public static void relase(ResultSet rs,Connection conn,Statement st){
            rsClose(rs);
            stClose(st);
            connClose(conn);
        }
        //方法重载
        public static void relase(Connection conn,Statement st){
            stClose(st);
            connClose(conn);
        }
        //创建三个私有的方法,用于释放资源
        
        private static void rsClose(ResultSet rs){
            try{
                if(rs != null)
                {
                    rs.close();
                }
            }catch(Exception e){
                e.printStackTrace();
            }finally{
                rs = null;
            }
        }
        private static void stClose(Statement st){
            try{
                if(st != null)
                {
                    st.close();
                }
            }catch(Exception e){
                e.printStackTrace();
            }finally{
                st = null;
            }
        }
        private static void connClose(Connection conn){
            try{
                if(conn != null)
                {
                    conn.close();
                }
            }catch(Exception e){
                e.printStackTrace();
            }finally
            {
                conn = null;
            }
        }
        
    }
    View Code

     调用封装的工具类连接数据库

    package java_jdbc_connectivity;
    
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java_jdbc_util.JdbcUtil;
    public class demo1 {
        /**
         * @param args
         * JDBC入门
         * @throws SQLException 
         */
        public static void main(String[] args) throws SQLException {
            Connection  conn = null;
            Statement st = null;
            ResultSet rs = null;
           
            try
            {
                conn = JdbcUtil.getConn();
                //3、创建staw,一定要创建这个对象
                st = conn.createStatement();
                //4、执行查询,得到结果
                String sql = "select * from info";
                rs = st.executeQuery(sql);
                while(rs.next())
                {
                    int id = rs.getInt("id");
                    String name = rs.getString("name");
                    int age = rs.getInt("age");
                    System.out.println("id="+id+"==name="+name+"---age"+age);
                }
            }
            catch(Exception e)
            {
                e.printStackTrace();//输出异常
            }
            finally{
                JdbcUtil.relase(rs, conn, st);
            }
        }
    
    }
    View Code

    配置文件XXX.properties中存放连接数据库的相关信息,如用户名、密码等,通过加载配置文件将这些信息加载到程序里,通过修改数据库名来连接不同的数据库,该配置文件可以存放在src或项目根目录下,对应有不同的加载方式

     

         

     

  • 相关阅读:
    LR: GLU-Net: Global-Local Universal Network for Dense Flow and Correspondences
    LR Hybrid Bird's-Eye Edge Based Semantic Visual SLAM for AVP
    论文阅读 CalibNet
    记开发过程遇到的IE兼容性问题(持续更新)
    Please make sure you have the correct access rights and the repository exists(转发)
    createElement函数的语法及其简单使用
    typeof、instanceOf、hasOwnProperty的使用和区别
    nrm 的使用方法
    files文件上传传递给后台
    package.json指南及其常用命令
  • 原文地址:https://www.cnblogs.com/ldd525/p/10344291.html
Copyright © 2011-2022 走看看