传智播客java学习--jdbc初步

本文详细介绍了使用JDBC连接MySQL及Oracle数据库的方法,包括加载驱动、执行SQL语句、处理查询结果等步骤,并对比了Statement与PreparedStatement的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我今天学习了用jdbc连接数据库的知识,我做了简单的笔记:


1.数据库的url  jdbc:mysql://loaclhost:3306/test
 jdbc:表示连接数据库使用的是jdbc协议
 mysql:表示连接数据库的子协议,不同的数据库使用的协议不 一样
 localhost:数据库服务器所在的ip地址
 3306 :使用的端口号
 test:连接的数据库

2.Class.forname("com.mysql.jdbc.Driver")
  它加载了字节码,但不调用com.mysql.jdbc.Driver类的构造方 法,
   它注册了驱动,调用的是com.mysql.jdbc.Driver的静态代码 块

3.连接数据库有异常时,用try-catch处理

4.创建statement对象,可以看成一个容器,用来运送sql语句,
 stmt=conn.createStatemrnt();

5.组织sql语句,
 String sql="insert into test(id,name)
   values(null,'ccc')"; null代表自增
 执行sql语句:int k=symt.executeUpdate(sql);
 executeUpdate 可以执行给定的sql语句,
 执行DML(insert update delete)返回值是影响的行数,
 执行DDL(create alter drop)语句 返回值是0

6.关闭连接:先关statement,在关conn,
  if stmt!=null stmt.close();
  if conn!=null conn.close();

7.执行数据库的查询语句;
***************方法一:
 String sql="select id ,name from test";
 Resultset rs= stmt.executeQuery(sql);//返回值为Resultset
 Resultset 是一个结果集,跟表的结构类似,

8.从Resultset 里面取数据时,光标处于第一行数据的前面,
 rs.next();//将结果集的光标下移一行,
  rs.getXxxxx(columneLable) 参数是列的索引值,该索引值从1  开始 2 3...
 int id=rs.getInt(1);//取第一列数据,
 String name=rs.getString(2);//取第二列数据

9.使用while遍历   //不用判断rs!=null ,因为rs 永远不为空
  while(rs.next){
   int id=rs.getInt(1);
   String name=rs.getString(2);
   system.out.print(id+" "+name);
  }

10.关闭的顺序:rs stmt conn

***********方法二:
 rs.next();//将结果集的光标下移一行,
  如果未指定 SQL AS 子句,则标签是列名称
 int id=rs.getInt("id");//取列为"id"数据
 String name=rs.getString("name");//取列为"name"数据


*************************************

练习:高考成绩查询表 (ppt jdbc01——23)
1.建立工具类:
 注册数据库驱动的方法;连接数据库的方法;
 关闭资源的方法;
2.建立college包,建立dao接口,建立collegedaoIpml实现类,
3.建立一个测试类,
4.建立表:
 create table college
 (
 id int primary key AUTO_INCREMENT,
 sex char(2),
 idCard varchar(18),
 acard varchar(15),
 name varchar(12),
 area varchar(30),
 grade double(5,2)
 )

6.建立一个javabean ,College
7.建立一个测试类test:
 实例化CollegeDaoImpl
 插入高考成绩:将数据封装到javabean
 保存信息,调用college.savecollege(College college)
 加载驱动,获取连接,创建statement对象,组织sql语句
 执行sql,关闭资源,
8.更行成绩
9.查询所有的成绩:
 List list=CollegedaoImpl.findall();
10.通过id来查询高考记录,
 College c=findby(id)
11.通过id删除高考成绩,

******************************************
1.连接Oracle数据库:
 加载字节码文件:
  Class.forname("oracle.jdbc.driver.oracleDriver");
2. 获取连接:
  String url="jdbc:oracle:thin:@loaclhost:1521/orcl";
  //thin  表示瘦客户端,在客户端不需要安Oracle的驱动
  //orcl  表示SID(不是全局数据库名称) 
  String username="scott";
  String psw="tiger";
  conn=DriverManager.getConnection(url,username,psw);
3.创建statement对象:
 conn.createStatement()对

4.可滚动的ResultSet
 创建一个 Statement 对象,该对象将生成具有给定类型和并 发性的 ResultSet 对象。
   Statement stmt = conn.createStatement (type,concurrency);
 
  对Mysql数据库无效
  对Oralce数据有效
 rs.previous()向后移动一行,

5.对MySQL数据库而言,默认情况是双向滚动,不设置类型和并 发也可以使用,而Oracle则必须设置,才能使用。


*********************************

6.用 PreparedStatement 取代 Statement 可以解决Statement  的不安全,
 利用PreparedStatement往数据库插入数据,
 创建PreparedStatement对象:
String sql="insert into test(id,name) values(null,'0')"
 PreparedStatement pstmt=conn.PreparedStatement(sql);
 pstmt.executeupdate();//DML语句返回值影响的行数
                       //DDL语句,返回值是0
 insert into test(id,name.email,desc) values(null,?1,?2,?3)
  pstmt.setString(paramIndex,xxx)
  pstmt.setString(1,"huo"); //?1-->name
  pstmt.setSting(2,"sss@sina.com");//?2-->email
  pstmt.setString(3,"love you");//?3-->desc
 
**********************************************
^^^PreparedStatement与statement比较^^^
1.statement存在sql注入的不安全:
 
2.PreparedStatement
 利用pstmt.setString(paramIndex,xxx)可以防止sql注入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值