001.java连接数据库(一)

package cn.itcast.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;


/*
* jdbc快速入门
* */
public class jdbcDemo1 {

    public static void main(String[] args) throws Exception {
        //1.导入驱动jar包
        //2.注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //3.获取数据库连接对象
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3","root","1314");
        //4.定义sql语句
        String sql = "update account set balance = 500 where id = 1";
        //5.获取执行sql的对象Statement
        Statement stmt = conn.createStatement();
        //6.执行sql
        int count = stmt.executeUpdate(sql);
        //7.处理结果
        System.out.println(count);
        //8.释放资源
        stmt.close();
        conn.close();

    }
}

上面代码会有一条警告,但是可以正常运行:

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

在mysql 5.0版本以后的jar包中,第二条注册驱动的代码可以省略。

 

小技巧:当有异常提示的时候,alt+enter可以抓捕异常,不需要自己敲代码了。

 

详解各个对象:

1.DriverManager:驱动管理对象

   功能:

            (1)注册驱动:

                  static void registerDriver(Driver driver); 注册与给定的驱动程序 DriverManager

               (2)获取数据库连接

                      方法:static Connection getConnection(String url, String User, String passwod);

                      参数:

                                 1.url:指定连接路径

                                         语法:jdbc:mysql://ip地址(域名):端口号/数据库名称

                                         例子:jdbc:mysql://localhost:3306/db3

                                        细节:如果连接的是本计mysql服务器,并且mysql服务默认端口号是3306,则url可以简写为

jdbc:mysql:///数据库名称

                                2.user:用户名

                                3.password:密码

2.Connection:数据库连接对象

              功能:

                 (1)获取执行sql的对象

                                  * Statement  createStatement()

                                  * PreparedStatement  createStatement(String sql)

                       (2)管理事务:有3个

开启事务:void setAutoCommit(boolean autoCommit). 调用该方法,设置参数为false,即开启事务
提交事务:commit()
回滚事务:rollback()

 

重要*3.Statement:执行sql的对象 -->用于执行静态SQL语句并返回其生成的结果对象

1.执行sql
(1)boolean execute(String sql):可以执行任意的sql  --->。 了解就好
*(2)int executeUpdate(String sql) : 执行DML(insert, update,delete)语句,DDL(create, alter,drop)语句
   返回值:影响的行数,可以通过这个影响的行数判断DML语句是否执行成功,返回值>0则执行成功。
*(3)ResultSet executeQuery(String sql): 执行DQL(select)语句
2.练习:
(1)account表 添加一条记录
(2) account表  修改一条记录
(3) account表  删除一条记录
(1)添加记录
package cn.itcast.jdbc;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

/*
* account表 添加一条记录  insert语句
*
*
* */
public class jdbcDemo2 {
    public static void main(String[] args){
        Statement stmt = null;
        Connection conn = null;
        try {
            //1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.定义sql
            String sql = "insert into account values(null,'王五',3000)";
            //3.获取Connection对象
            conn = DriverManager.getConnection("jdbc:mysql:///db3","root","1314");
            //4.获取执行sql的对象 Statement
            stmt = conn.createStatement();
            //5.执行sql
            int count = stmt.executeUpdate(sql);//影响的行数
            //6。处理结果
            System.out.println(count);
            if(count>0){
                System.out.println("添加成功!");
            }else{
                System.out.println("添加失败!");
            }


        } catch (ClassNotFoundException e){
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            //7.释放资源

            //避免空指针异常
            if(stmt != null){
                try {
                    stmt.close();
                }catch (SQLException e){
                    e.printStackTrace();
                }
            }
            if(conn != null){
                try {
                    conn.close();
                }catch (SQLException e){
                    e.printStackTrace();
                }
            }
        }
    }

}
(2)
package cn.itcast.jdbc;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

/*
* account表 修改记录
* */
public class jdbcDemo03 {
    public static void main(String[] args){
        Statement stmt = null;
        Connection conn = null;
        try {
            //1.注册驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.定义sql
            String sql = "update account set balance = 200 where id = 3;";
            //3.获取Connection对象
            conn = DriverManager.getConnection("jdbc:mysql:///db3","root","1314");
            //4.获取执行sql的对象 Statement
            stmt = conn.createStatement();
            //5.执行sql
            int count = stmt.executeUpdate(sql);//影响的行数
            //6。处理结果
            System.out.println(count);
            if(count>0){
                System.out.println("修改成功!");
            }else{
                System.out.println("修改失败!");
            }


        } catch (ClassNotFoundException e){
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            //7.释放资源

            //避免空指针异常
            if(stmt != null){
                try {
                    stmt.close();
                }catch (SQLException e){
                    e.printStackTrace();
                }
            }
            if(conn != null){
                try {
                    conn.close();
                }catch (SQLException e){
                    e.printStackTrace();
                }
            }
        }
    }
}

4.ResultSet:结果集对象

newt():游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是则返回false
getXxx(参数):获取数据
    Xxx:代表数据类型  如,int  getInt(),  String getString()
    参数:
        1.int:代表列的编号,从1开始   如,getString()
        2.String: 代表列名称。 如,getDouble(balance)
注意:
使用步骤:
1.游标向下移动一行
2.判断是否有数据
3.获取数据

 

5.PreparedStatement:执行sql的对象。-->用于执行动态SQL语句

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值