JDBC学习日记--java实现SQLServel数据库的基本增删改查操作

数据库的基本操作

课前了解:

了解加载数据库驱动

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 

通过反射的方式加载数据区驱动,
也是数据库的注册操作 这是一个简化了的写法(原本写法如下)

DriverManager.registerDriver(Class.forName(driverClass).new Instance());

但Driver中有一个静态代码块会执行相关语句,所以省略了。

**了解DriverManager**

DriverManager是驱动的管理类,可以注册多个驱动程序,可以通过它的getConnection(url,user,password)方法直接获得一个Connection

代码

(1)为了便于解耦和程序的健壮性,我们将driverClass,url,user,password写成一个配置文件
在这里插入图片描述
(2)将Connection的获取抽取成一个方法

private static Connection getConnection() throws Exception {
  
  //输入流
  InputStream in = SelectOperator.class.getResourceAsStream("jdbc.properties");
 //创建一个Properties对象
  Properties properties = new Properties();
  //读取配置文件中的数据
  properties.load(in);
  
  Connection conn;
  //加载驱动
  String driverName = properties.getProperty("driverName");
  //String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
  Class.forName(driverName); 
  
  //填写数据库url
  String url = properties.getProperty("url");
  //String url = "jdbc:sqlserver://localhost:1433; DatabaseName=sc";
  
  //sql账号
  String user = properties.getProperty("user");
  //String user = "username";
  
  //密码
  String password = properties.getProperty("password");
  //String password = "12356789";
  
  //获得数据库连接
  conn = DriverManager.getConnection(url, user, password);
  
  return conn;
 }

(3)将资源的关闭抽象成一个方法

private static void connectionClose(Connection conn, Statement stmt, ResultSet res) {
  //conn不为空则关闭
  if(conn != null) {
   try {
    conn.close();
   } catch (Exception e) {
    // TODO: handle exception
   }
  }
  
  //stmt不为空则关闭
  if(stmt != null) {
   try {
    stmt.close();
   } catch (Exception e) {
    // TODO: handle exception
   }
  }
  
  //res不为空则关闭
  if(res != null) {
   try {
    res.close();
   } catch (Exception e) {
    // TODO: handle exception
   }
  }
 }

注:res是一个ResultSet对象,用于存储SQL返回的数据(后文会提到)
(4)实现插入、删除、修改操作

public static void main(String[] args) {
  System.out.println("Open database:");
  
  Connection conn = null;
  Statement stmt = null;
  ResultSet res = null;
  
  try {
   //得到数据库连接
   conn = getConnection();
   
   //得到执行SQL语句的对象
   stmt = conn.createStatement();
   
   //写SQL语句(更新记录)
   String sql = "Delete from student where name='aa' ";
   
   	//写SQL语句(插入一条记录)
   //String sql = "insert into student(name,age) values ('aa',33)";
	 //写SQL语句(更新记录)
   //String sql = "update student set name = 'JIN1' where name = 'jin' ";
   stmt.executeUpdate(sql);
   
  } catch (Exception e) {
   // TODO: handle exception
   e.printStackTrace();
  }finally {
   //关闭资源
   connectionClose(conn,stmt,res);
  }
  
  System.out.println("end");
  
 }

在插入、修改、删除中SQL没有返回结果(不需要ResultsSet)
(5)实现查找操作
在查询操作时需要用res(ResultSet对象来接受返回值)
稍作修改

//写SQL语句(查找记录)
   String sql = "select name,age from student";
   
   res = stmt.executeQuery(sql);
   
   while(res.next()) {
    System.out.println(res.getString(1) + " " + res.getString(2));
   }

注解:
res.next()是将光标指向下一个元组(刚开始光标在第一个元组之前)
getString(1)是得到元组中第一个数据项的字符串(这儿第一个数据项是name)也可以用get(“name”)来得到对应的值

本次学习笔记中用的数据表是Student(name,age)

希望您有所收获

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值