JDBC操作数据库

来源:互联网 发布:石柱农村淘宝招聘 编辑:程序博客网 时间:2024/05/29 19:50
JDBC连接MySql,数据操作:
 * 1、加载Mysql数据驱动(非必须步骤)  Class.forName("com.mysql.jdbc.Driver");
 * 2、创建数据库连接Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/erp", "数据库用户名", "数据库密码");
 * 3、写sql语句:String sq = "";
 * 4、创建执行sql的Statemen对象: Statement st = conn.createStatement();
 * 5、执行sql:st.execute***(sql);
 *  a、查询:ResultSet rs = st.executeQuery(sql);
 *          while(rs.next()){}
 *  b、更新,删除,插入: int count = st.executeUpdate(sql);返回值是表示数据库操作成功的条数

 * 6、数据库关闭:conn.close();


 static Statement st;    public static void main(String[] args) {        //先要获取连接,即连接到数据库        Connection conn = getConnection();        //insert(conn);//插入数据        query(conn);//查询数据        //update(conn);//更新数据        //delete(conn);//删除数据    }    //查询    private static void query(Connection conn) {        Statement st;        try {            String sql = "select * from t_user";     // 查询数据的sql语句            st = (Statement) conn.createStatement();    //创建用于执行静态sql语句的Statement对象,st属局部变量            ResultSet rs = st.executeQuery(sql);    //执行sql查询语句,返回查询数据的结果集            System.out.println("最后的查询结果为:");            while (rs.next()) { // 判断是否还有下一个数据                // 根据字段名获取相应的值                int id = rs.getInt("id");                int age = rs.getInt("age");                String name = rs.getString("name");                String password = rs.getString("password");                String sex = rs.getString("sex");                //输出查到的记录的各个字段的值                System.out.println(id + " " + age + " " + name + " " + password + " " + sex);            }            conn.close();   //关闭数据库连接        } catch (Exception e) {            System.out.println("查询数据失败");        }    }    //插入    private static void insert(Connection conn){        try {            String sql = "insert into t_user(id,age,name,password,sex) values(1,10,'zhhangsan','111111','man')";            st =  conn.createStatement();//创建用于执行sql语句的Statement对象            int count = st.executeUpdate(sql);//执行sql语句,返回的是更新数据的条数            System.out.println("往数据库中插入了 " + count + "条数据");        }catch (Exception e){            System.out.println(e.getMessage());        }    }    //删除    private static void delete(Connection conn){        try {            //sql语句            String sql = "delete from t_user where id = 1";            //生成执行sql的Statement对象            st = conn.createStatement();            //执行sql语句            int count = st.executeUpdate(sql);            System.out.println("删除了 " + count + " 条数据");        }catch (Exception e){            System.out.println(e.getMessage());        }    }    //修改    private static void update(Connection conn){        try {            //写sql            String sql = "update t_user set password='222222' where id=1";            //生成Statement对象            st = conn.createStatement();            //执行sql            int count = st.executeUpdate(sql);            System.out.println("更新了 " + count + " 条数据");        }catch (Exception e){            System.out.println(e.getMessage());        }    }    //数据库连接    private static Connection getConnection() {        Connection conn = null;  //创建用于连接数据库的Connection对象        try {            Class.forName("com.mysql.jdbc.Driver");// 加载Mysql数据驱动,非必须            conn = DriverManager.getConnection(                    "jdbc:mysql://localhost:3306/erp", "root", "root");// 创建数据连接        } catch (Exception e) {            System.out.println("数据库连接失败" + e.getMessage());        }        return conn;    }


解释

1、为什么说Class.forName是非必须的

在java中只有类被使用的时候才会被加载(加载:读取字节码,执行static块)

        而Class.forName的作用呢就是加载对应名称的类

所以,在这里Class.forName这里是是保证了在执行DriverManager.getConnection时,对应的com.mysql.jdbc.Driver已经在JVM中了

在JDBC4.0之后,DriverManager会自动去读取jdbc.Driver中的信息,同时getConnection会自动调用server provider(服务器供应商)去获取信息

即,说明了只要你的JDBC包含了驱动信息,是可以不用Class.forName这个方法

那么在什么情况会需要这个呢?

a、jdk1.6以下的版本

b、JDBC4.0以下的版本


PS:在研究使用idea+mave工具,顺便带上依赖包的:


0 0
原创粉丝点击