JDBC(二)之实现CRUD操作

    CRUD:即平常所说的增删改查,是增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。crud主要被用在描述软件系统中数据库或者持久层的基本操作功能。

编程步骤:

1:初始化驱动  

2:建立与数据库的连接  

3:创建Statement  

4:执行SQL语句  

5:关闭连接

具体实现:

import java.sql.*;

public class JDBCConn {
	public static void main(String[] args) {
		String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
		String dbUrl = "jdbc:sqlserver://localhost:1433;DatabaseName=SC";
		String uName = "test";
		String uPwd = "test";
		Connection conn = null;
		Statement stmt = null;
		ResultSet rs = null;
		try {
			Class.forName(driverName);
			// new com.microsoft.sqlserver.jdbc.SQLServerDriver();//与上句功能相同,均是实例化驱动
			conn = DriverManager.getConnection(dbUrl, uName, uPwd);// 连接数据库
			String SQL = "select * from course";
			stmt = conn.createStatement();// 创建Statement
			rs = stmt.executeQuery(SQL);// 执行SQL语句----------- *1
			while (rs.next()) {
				// 遍历result set 的结果并打印
				// 这里的getXxx()方法,要根据实际获取的数据类型决定,int型则用getInt(),char、varchar则用getString()等等
				System.out.println(rs.getString("courseno") + " " + rs.getString("coursename"));
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				// 关闭连接。此处的异常处理尤为重要,不关闭连接会造成资源浪费
				// 关闭顺序为ResultSet——>Statement——>Connection
				if (rs != null)
					rs.close();
				if (stmt != null)
					stmt.close();
				if (conn != null)
					conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}

  •     对于*1的内容,若SQL语句为DQL(数据库查询语言,select),则使用executeQuery();若为DML(数据库操纵语言,update、insert、delete)和DDL(数据库定义语言,create),则使用executeUpdate()。
  •     执行查询时,其中的getXxx()方法,括号里的参数可以是列名,也可以是列号(注意这里是基1的),括号里是几就是第几列,比如1代表第一列。

应用实例:

1.使用SQL语句判断账号密码是否正确   

        判断账号密码的 正确方式是根据账号和密码到表中去找数据,如果有数据,就表明密码正确了,如果没数据,就表明密码错误。
        不恰当的方式 是把uers表的数据全部查到内存中,挨个进行比较。 如果users表里有100万条数据呢? 内存都不够用的。
{
            String name = "dashen";
            //正确的密码是:thisispassword
            String password = "thisispassword1";
   
            String sql = "select * from user where name = '" + name +"' and password = '" + password+"'";
              
            // 执行查询语句,并把结果集返回给ResultSet
            ResultSet rs = s.executeQuery(sql);
              
            if(rs.next())
                System.out.println("账号密码正确");
            else
                System.out.println("账号密码错误");
             
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

2.进行分页查询

public static void list(int start, int count)//start 表示开始条数,count表示一页显示的总数

   例如: list(0,5) 表示第一页,一共显示5条数据
    list(10,5) 表示第三页,一共显示5条数据
    首先,要知道分页查询的SQL语句如何去写,在MySQL中,提供了一个方便的limit关键字。

    LIMIT [offset,] rows

    offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。

取前5条数据
select * from table_name limit 0,5 

或者
select * from table_name limit 5 

查询第11到第15条数据
select * from table_name limit 10,5

    limit关键字在SQLServer中是没有的,所以需要另谋他法。

    程序代码:

public static void list(int start, int count){
         try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            try (Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/how2java?characterEncoding=UTF-8",
                    "root", "admin"); Statement s = c.createStatement();) {
                String sql = "select * from hero limit " +start + "," + count;
 
                // 执行查询语句,并把结果集返回给ResultSet
                ResultSet rs = s.executeQuery(sql);
                while (rs.next()) {
                    int id = rs.getInt("id");// 可以使用字段名
                    String name = rs.getString(2);// 也可以使用字段的顺序
                    float hp = rs.getFloat("hp");
                    int damage = rs.getInt(4);
                    System.out.printf("%d\t%s\t%f\t%d%n", id, name, hp, damage);
                }
              
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    }
     
    public static void main(String[] args) {
       list(10,5);
    }

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值