A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 厦门校区   /  2018-5-27 19:59  /  4351 人查看  /  56 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

吴鹏

总结

----------------------------------------------------------------
一 什么是JDBC

英文全称是:java database connectivity,翻译过来是Java 数据库 连通;

是一套接口和规范,让开发人员可以用这套规范使数据库和java进行联系;

1 加载驱动;
2 获得连接;
3 基本操作;
4 释放资源;

二 sql漏洞注入:
因为在java中定义sql语句时,是将获得用户的username和password与sql通过字符串拼接在一起的,当在
输入的时候,用户名为任意用户名' or ' 1=1,密码随意或者任意用户名' -- 密码随意;这样输入会使后面密码
的判断失效,只要用户名是存在在网站的数据库,且没有防sql漏洞,则不需知道密码就可以登陆;
在sql语句中,原本是:
"select * from user where username ='"+username+"' and password = '"+password+"'";
替换成上面就会是:
"select * from user where username ='"+aaa' or ' 1=1+"' and password = '"+任意+"'";
则结果必然达成,因此只要直到用户名即可以登陆;

解决的办法:
使用PreparedStatement代替Statement来接收要执行的sql语句,对于sql中未确定的值,可以用占位符?来代替;
只需在执行前使用PreparedStatement的setInt()或者setString()方法,将占位符设置成我们需要的值即可;

三 JDBC的预编译进行增删改查操作:
早上教的JDBC的增删改查是使用Statement来接收要执行的sql语句;
在下午,教导了使用PreparedStatement来进行数据库的增删改查,优点是
代码阅读更简单,使用占位符来修改sql语句中的值,提高了可维护性;
使用Statement的代码如下:

Connection conn = null;
statment stmt = null;

Class.forName("com.mysql.jdbc.Driver");
//加载驱动;
conn = DriverManager.getConnection(url,username,password);
url为数据库的地址:jdbc:mysql//localhost:3306/数据库名称;
username 数据库登陆用户名
password 数据库登陆密码
stmt = conn.createStatement();
//创建执行sql语句的对象;
String sql = "";
//创建sql语句;
int num = stmt.executeUpdate(sql);
//执行sql语句,返回的是int类型的数据,意义为增,删,改为表中的第num行;
if(num>0){System.out.println("执行成功")};
//可以根据num值来对操作进行判断,提示操作是否成功;
释放资源;
------------
当使用预编译时,将Statement替换为PreparedStatement,稍作修改;
Connection conn = null;
PreparedStatement pstmt = null;

Class.forName("com.mysql.jdbc.Driver");
//加载驱动;
conn = DriverManager.getConnection(url,username,password);
url为数据库的地址:jdbc:mysql//localhost:3306/数据库名称;
username 数据库登陆用户名
password 数据库登陆密码
String sql = "...?...?...";
//创建sql语句;
pstmt = conn.createPreparedStatement(sql);
//创建执行sql语句的对象;
pstmt.setInt(colnum,值)/pstmt.setString(colnum,值);
对占位符进行设置,特别要注意的是,占位符的首位是从1开始计数,而不是像索引值从0开始;
int num = stmt.executeUpdate(sql);
//执行sql语句,返回的是int类型的数据,意义为增,删,改为表中的第num行;
if(num>0){System.out.println("执行成功")};
//可以根据num值来对操作进行判断,提示操作是否成功;
释放资源;


回复 使用道具 举报
今天对JDBC:java与database的连接进行了初步的学习,JDBC是java为数据库厂商提供的一组接口,在使用时有以下步骤:
贾:加载驱动         一般采用反射方法加载驱动(Class.forName("com.mysql.jdbc.Driver")),可以避免驱动的二次加载,提高代码运行的效率
琏:创建数据库连接对象       通过DriverManager.getConnection获取
欲:创建sql语句执行对象      通过connection对象调用方法获取(其中preparedStatement可以有效地避免sql注入漏洞)
执:执行sql语句     当需要进行DQL操作时,调用的方法与DML操作时存在区别,返回一个resultset集合,遍历需用到next方法
事:释放内存          释放资源时手动将资源置为null的目的是为了让垃圾回收机制更早地释放发现回收
回复 使用道具 举报
本帖最后由 13163997058 于 2018-5-28 12:51 编辑

王刘锁
在艰难的学完数据库MySQL之后今天终于回到了久违了近10天的eclipse
.一切还是那么陌生,好不容易记住的又想不起来了,像什么快捷键和一些语法!
不过在今天的学习中我们又重新找回了一些记忆,当然也是学了一些新知识.今儿主要学习JDBC
它是一个用来连接数据库的纽带好让我们可以用Java语言执行SQL语句来访问数据库,
其实就是SUN公司提供的一组接口和类的规范,
在使用的时候我们首先要先把提供的jar包给导进来把配置环境做好也就是build path,一说就可以想的起来,
接下来说一下怎么访问数据库,
第一步:需要注册驱动 驱动就是设备间互相访问的通道!格式是固定的记住就行
利用反射获得class文件:
     Class.forName(com.mysql.jdbc.Driver//driverClassName)
第二步:获取和数据库的连接,同样固定的格式
     Connection conn=DriverMannager.getConnectio("jdbc:mysql://localhost:3306/db1","root","root");第一个参
数是jdbc:mysql://数据库IP地址:端口,后面两个是自己的用户名和密码
第三步:获取执行sql语句的Statement对象,固定格式
Statement stmt = conn.createStatement();
第四步:写sql语句:这里sql语句一定要写正确,
     String sql = "select * from xsb";//查询 "delete from xsb where sid=3";//删除
    "update xsb sname='小阿香',sex='男' where sid=3";//修改
    "insert into xsb values(null,'小龙龙','女')";//添加
第五步:执行sql语句:
如果是查询语句要用结果集来接收,然后遍历结果集
     ResultSet rs=stmt.executeQuery(sql);
        while(rs.next()){
        System.out.println(rs.getInt("sid")+rs.getString("sname")+rs.getString("sex"));
        }
如果是增删改的话:
     int num =stmt.executeUpdate(sql);
        if(num>0){
        System.out.println("操作成功!!");
        }
第六步:最重要的一步,释放资源,
     rs.close();
     stmt.close();
     conn.close();
当然写完这些代码发现好多重复的代码!那今天还学习了抽取工具类,这里不多说了,把相同的代码抽取出来就可以,另外为
了让客户可以方便的修改个人信息还学习了设置配置文件,让客户可以直接修改文件中的信息.
此外呢还有一个sql的注入问题也就是当别人知道用户名的时候可以利用[用户名 ' or ' 1=1 ]这样的方式在sql语句加载执行的时候把sql语句拼接成[username='用户名' or '1=1' and password='密码']的格式,这时因为or关键字和1=1等式的永成立这个sql语句的条件就会永远成立,因此无论输入的密码是否正确都会登录成功!,不知道我的qq号是不是这样被人给盗的!但是今天学习了这个preparedStatement就可以解决被盗号问题了,.
这里就把改变的代码部分写出来好了,
第一步:注册驱动,
第二步:获取连接,
第三步:获取执行sql语句的对象并执行sql语句
     String sql = "insert into xsb values(null,?,?)";
     这里的信息被?占位
     PreparedStatement stmt = conn.preparStatment(sql);
     然后给?赋值,这里的1,2是第一第二个?
     stmt.setString(1,"小敏");
     stmt.setString(2,"女");
     执行sql语句
     int num = stmt.executeUpdate();
        if(num>0){
        System.out.println("操作成功!!");
        }
第四步:释放资源.
在最后声明一下,这里的代码要用try{以上代码}catch(异常类型){异常处理}finall{释放资源}给捕获才行!
回复 使用道具 举报
郑学馨
什么是JDBC:
  是一个桥梁,用来连接数据库与我们的java语句的;
  JDBC是sun公司定义的一个接口,规范各个不同的数据库厂商的

数据库,保证其能在java中正常使用
方法的重载:
  方法名相同,参数类型不同,这样的额方法就叫做方法的重载
如何只用JDBC:
  口诀:五步骤:贾琏欲执事
        贾(加):加载jdbc的驱动也叫注册驱动,
        琏(连):连接数据库<创建数据库连接>
        欲(语):创建SQL语句
        执(执):执行SQL语句
        事(释):释放资源

  五步骤代码表示:
        贾(加):Class.forname("com.mysql.jdbc.Driver");
        (连):connection

conn=drivermanager.getconnection(数据库路径,用户名,密码)
        欲(语):创建SQL语句
                string sql="sql语句";
                pps=conn.preparestatement(sql)
                设置sql语句中的值
                pps.set(问号位置,要设置的值)
        执(执):执行SQL语句
               int i=pps.excuteupdate();增删改专用词
               resultset rs=pps.excutequery();查询专用词
        事(释):释放资源
               增删改:conn.close()
                      pps.close();
               查:conn.close()
                  pps.close();
                  rs.close()

注意:为什么在第三步时要用preparestatement代替statement?
     因为用statement时会出sql注入,用preparestatement时   

  jvm在编译时会将特殊字符转移成字符串,避免出现sql注入

jdbc工具类的创建:
        一:常量的创建
        二:静态代码块:对上面常量进行赋值
        三:提取出的方法的创建
回复 使用道具 举报
今天学习了用java来操作数据库;增删改查,内容都比较相似,增删改除了执行的sql语句不同 其他的一样,五个步骤,
加载驱动;Class.forName("com.mysql.jdbc.Driver");
创建连接 DriverManager.getConnection("jdbc:mysql:///abc", "root", "root");
创建sql执行语句,执行sql语句,释放资源;
查询多了一个遍历结果集结果集;释放资源也要多释放一个结果集
回复 使用道具 举报
游荣辉

总结
今天学习了JDBC (数据库连接)就是在Java中写SQL语句
想要使用JDBC 第一步就必须导包(.jar的文件)
他有固定的步骤
        1.注册驱动 Class.forName("com.mysql.jdbc.Driver");
        2.获得连接 Connection conn = DriverManager.getConnection(“jdbc:mysql://主机名:端口号/数据库的名称”,”数据库的用户名”,”数据库的密码”);
                   Connection con = DriverManager.getConnection(“jdbc:mysql:///数据库名称”,”数据库用户名”,”数据库密码”);
        3.获得预处理对象 Statement stmt = con.createStatement();
        4.处理结果集(只有查询的的时候有结果集,添加,删除,修改都没有)ResultSet rs = stat.executeQuery(sql);
                     添加,删除,修改使用  int num = stat.executeUpdate
        5.释放资源 先判断资源是否为null, 不为null就是说明里面有东西,然后将他捕获,在手动设为null
还有sql注入的问题(把Statement改成prepareStatement就可以解决了)
        如何使用呢
                1.注册驱动
                2.获取连接
                3.获取预处理对象
                        String sql = "";(写入sql的增删改查的语句)
                        PreparedStatement stat = conn.prepareStatement(sql);
                4.为sql语句设置实际参数
                5.执行sql语句
                6.遍历结果集
                        while(rs.next()){
                            System.out.println( rs.getString("sid")+"--"+rs.getString("sname"));
                        }
回复 使用道具 举报
郑阳阳
JDBC是sun公司提供的一套统一的规范的接口.
使用JDBC首先需要加载驱动,需要使用DriverManager.
加载驱动 Class.fromName("com.mysql.jdbc.Driver");
DriverManager还有个作用是获得连接 DriverManager.getConnection(url,username,password);
url与数据库连接的路径,简写 jdbc:mysql:///数据库名称
username 数据库的用户名,password 数据库的密码;
获得连接返回一个Connection对象,Connection可以创建执行SQL语句对象,
Statement :可以执行SQL,不过不安全,有SQL注入漏洞.
CallableStatement : 执行数据库中存储过程,今天没有使用.
PreparedStatement : 也是执行SQL,可以对SQL实行预处理,可以防止SQL注入漏洞(一般使用这个).
Connection还有个管理事务的作用,今天没有使用.
Connection.PreparedStatement返回一个PreparedStatement对象.
Connection.PreparedStatement(SQL)需要传入一个SQL语句,SQL的参数需要使用?号代替
修改例:update 表名 set name=? where id=?;
PreparedStatement对象调用setString可以给?号赋值,set后面根据数据类型改版
PreparedStatement调用executeUpdate返回一个int值,表示被修改的行数,适用与增删改
PreparedStatement调用executeQuery返回一个ResultSet对象.适用查找
ResultSet是一个结果集,可以遍历结果集拿到表的数据.
JDBC的增删改查
增删改查大致步骤差不多
1.加载驱动 2.获取连接 3.编写SQL语句 4.SQL的预处理 5.释放资源
增删改需要在编写后给定参数
释放资源的标准写法:
Connection,PreparedStatement,ResultSet需要释放资源.
Connection对象稀有需要晚创建,早释放.
if(需要关流的对象!=null){
        try{
        对象.close();
        }catch(SQLException e){
        e.printStackTrace();
        }
}
        对象=null;
JDBC的工具类:
就是把增删改查中重复的代码抽取出来,有加载驱动,获得连接和释放资源
工具类中需要用到的参数可以通用配置文件使其更好更改.
配置文件的拓展名是.properties 内容是:key=value
使用的时候在静态代码块中创建Properties对象,使用load方法可以输入配置文件路径,
然后使用getProperty(key)赋值.
差不多就这些了.
回复 使用道具 举报
詹源
今天学习了JDBC的一些初步运用
JDBC用于应用和数据库之间的连接,由一组JAVA语言编写的类和接口组成.
JDBC是一套规范,有了JDBC,程序员无需在开发不同系统时,为了连接不同数据库,
而去了解不同数据库驱动的API.SUN公司提供JDBC这个规范(接口),各个数据库生产商则
提供JDBC的实现.有了JDBC,使得开发系统时候,连接数据库更加便捷,节约开发成本.

今天的重点在于,利用JDBC进行对数据库表的增删改查.
要使用JDBC,首先要在项目内引入jar包
JDBC开发步骤分四步:
第一步:加载驱动  Class.forName("com.mysql.jdbc.Driver");
第二步:获得连接  创建Connection对象.与数据库建立连接
第三步:基本操作         创建Statement对象执行SQL语句,然后编写SQL语句,执行语句
第四步:释放资源  Connection对象关闭!Statement对象关闭!如果有执行查询功能ResultSet对象也关闭!

代码中的加载驱动,获取跟数据库的连接,释放资源等操作,存在大量重复.因此可以抽取出来放在工具类中

JDBC存在SQL注入漏洞,需要采用PreparedStatement 对象解决这个问题.
回复 使用道具 举报
谢洪彬:
今天学习了JDBC,学习了这个最大区别就是可以将前两天学的数据库在java上进行操作,而JDBC的运用又可以分为4个步奏:
4步奏:
1.加载
先找到对应的.jar架包导入java工具中
利用ClassforName(com.mysql.jdbc.Driver);加载
2.连接
利用conn = DriverManager.getConnection(url,username,password);获取连接对象
3.操作
利用ppatt = conn.prepareStatement(sql);获取操作sql对象,并传入sql对象.
4.释放资源
Close()释放资源;

增删改使用executeUpdate()方法,并且释放资源时只要释放两个
查询使用executeQuery()方法,但是释放资源需要释放三个,应为查询多出了结果集,结果集也是需要遍历调用get类型拿到相应的值.
JDBC工具类,就是把重复的代码抽取出来,减少代码复用性.
还可以将主机名,用户和密码像类似与键值对的样子存储到.properties文件中,这样操作起来方便,可读性高.
回复 使用道具 举报
陈叶隆
用@Test注解可以不写main方法;
Part i:JDBC开发步骤:
1加载驱动: Class.forName("com.mysql.jdbc.Driver");
2.获得连接:Connection conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/db1”,”root”,”root”);
3.获得处理语言对象: PreparedStatement ppsm = conn.prepareStatement(sql);
4.执行操作: ppsm.setString(1, "数码产品");ResultSet rs = ppsm.executeQuery();while( rs.next() ){
System.out.println( rs.getInt("id")+"--"+rs.getString("name"));
                }
5.释放资源: rs.close();stmt.close();con.close();
Part ii:配置文件:
Properties prop=new Properties();
prop.load(new FileInputStream(“src/db.properties”));
url=prop.getProperty(“url”);
回复 使用道具 举报
常小天
今天学习的是JDBC的内容。JDBC是将java和数据库连接起来的桥梁。使用JDBC可以让我们在java中来操作数据库。JDBC是一组接口,也就是一组规范。各数据库在驱动中实现这组接口,从而达到各种不同的数据库都能接入到java语言中进行操作。使用JDBC的步骤为:加载驱动、获取连接、创建sql语句对象、编写并执行sql语句、最后释放资源。加载驱动时采用获取驱动类的class对象的方式加载驱动,因为Driver类中的静态代码块中会加载一次驱动。获取连接的方法是DriverManager中的静态方法getConnection(),该方法中有三个参数,URL为要连接的数据库的路径,后两个为用户名和密码。之后通过连接对象调用方法获得语句对象,这里要采用可以解决SQL注入漏洞的preparedStatement()对象。接下来预编译SQL语句,注意别漏了问号。执行增删改操作使用executeUpdate(),返回受影响的行数,判断返回值是否大于0来确定是否操作成功,执行查询操作使用executeQuery(),返回值为结果集,遍历结果集并输出。此外有两点注意的地方,一是导包要到导java.sql下的包,不要导错,二是在配置属性文件时,属性文件中的信息末尾不要加任何多余的符号,尤其是不要加空格,会特别难检查出来。
回复 使用道具 举报
刘文峰
Jdbc是一套接口规范,为了避免当我们要使用java连接不同数据库时都要学习不同数据库的语法而产生的.
sql注入漏洞是指在登录网站时在知道用户名的情况下输入 用户名’ or ‘1=1 即可不要密码就能登录.解决方法是不使用Statement 改为使用PreparedStatement来执行sql语句.他会在sql语句执行前进行一次预编译,从而避免sql注入漏洞的发生.
使用预编译对象进行增删改查
第一步 加载驱动 Class.forName(“com.mysql.jdbc.Driver”);
第二步 获得连接
Connection conn = DriverManager.getConnection(“jdbc:mysql://主机地址:端口号/数据库名称”,用户名,密码);
第三步 预编译对象执行操作  PreparedStatement;
首先编写sql语句 :String sql = “sql语句”;
接着获得预编译对象 PreparedStatement pstmt = conn.PreparedStatement(sql);
Sql语句里的部分参数可以用?代替;我们可以给?号赋值
例如 pstmt.setString(1, “aaa”); 1是指第几个?号,”aaa”是设置一个字符串类型的值,
SetString()可以给字符串赋值,setInt()可以给int类型赋值等等有很多个方法可以给不同类型的参数赋值;
然后执行sql语句  :pstmt.executeUpdate();可以进行增删改操作;返回收影响记录的数量,我们可以进行判断,如果大于零,则操作成功,否则操作失败.
Pstmt.executeQuery();可以进行查询语句操作, 返回一个结果集(ResultSet,只有查询会有),可以遍历结果集查看获得的数据
最后一步是关流. 创建的三个对象都需要关流,关流的方法都一样,只是对象不一样
If(conn.next() !=null ){
Try{
Conn.close();
}catch(Exception e) {
        e.printStackTrace();
}
}
回复 使用道具 举报
苏海斌
JDBC就是让SQL语句能在Java代码中执行,
步骤是贾琏欲执事,
贾:加载驱动
琏:获得链接
欲:获得语句对象
执:执行语句
事:释放资源
我们操作JDBC代码会 存在注入漏洞,也就是安全性低,存在风险,所以用PreparedStatement来解决这一问题,
回复 使用道具 举报

2018/5/27 林玮

今天讲了一个JDBC,我知道了什么是JDBC,它是干嘛用的,它要怎么用,

什么是JDBC?JDBC是一个能连接两个应用的接口规范.它是由Sun公司提供的为了方便程序员操作java连接各种数据库,反正我是这么理解的.
JDBC有什么用?
通俗来讲就是连接了
(重点)JDBC要怎么用?
在进行操作之前要先导入驱动jar包,然后在java软件中编写代码,但和之前的的代码稍有不同,它的入口函数不是main方法,是test测试方法.
注意:1.有test方法就不能有main方法;2.test方法的开头必须要有@Test;3.test方法不能用static修饰;4.当一个类里有多个test方法时,方法名不能相同.
JDBC主要用法就是让java连接到数据库从而对数据库进行增删改查操作,他们的代码大致上一样除了查的代码会多一个ResultSet结果集,有一个会打了,其他就也会打了.大致结构:注册驱动--获取连接--创建sql对象--编写sql语句--执行sql语句--释放资源.这是基本结构,缺点有:代码不够简洁,安全性低;  不够简洁主要是因为他们之间代码大部分相同,解决方法:提取代码到工具类. 安全性低是因为代码会有sql注入漏洞,解决方法:这个就简单了,之前我们用的都是Statement对象,改用PreparedStatement就好了,因为Statement只能执行SQL语句,而PreparedStatement既能执行SQL,还能对SQL进行预处理,也就是对SQL提前处理,这就解决了SQL注入漏洞的安全问题.
回复 使用道具 举报
许煜
每日总结
JDBC Java Date Base Conncetivity直译 java与数据库的连接驱动器
增删改查CRUD create research update delete 四个案例遵循以下步骤
1 加载驱动 通过反射加载 Class.forname(“com.mysql,jdbc.Driver”)
    2创建连接对象  drivermanager.getconnection()
3 创建语句对象  conncetion.createpreparedstatement();
4 编写sql语句 string str=”sql语句”;
5执行语句 增删改executeupdate() 查executequery() 用resultSet接收
6释放资源 写进finally代码块
抽取共性创建jdbcutils工具类使用起来更加简便
  Preapredstatem是通过使用转义符使特殊符号失效,防止sql注入.

今天学习的内容主要意义在于了解通过java程序修改数据库的基础内容.毕竟以后开发的时候基本上不可能是使用控制台或者数据库可视工具手动来修改数据库,基本上都是靠程序对各种情况进行判断然后执行相应程序对数据库的数据实现修改.今天的内容之于以后的学习的意义更像是一把钥匙或者一扇门.以后不管是使用高级的框架或者工具类来实现java程序修改数据库,但是我觉得底层内容应该就是这些.
回复 使用道具 举报
李成林
总结 JDBC
java连接mysql数据库的步骤

加载驱动:

Class.forName(jar包);

创建连接:

Connection conn=DriverManager.getConnection();

创建执行事务
Statement stmt= conn.createStatement;

创建sql 查询语句

String sql = "select *from emp ";

创建结果集

resultSet rs= stmt.executeQuery(sql);

遍历集合
.......

sql的语句
添加语句格式
String sql="insert into emp values(.......)"
删除语句格式
String sql = "delete from emp where ........"
修改语句格式
String sql ="updete emp set ............";







回复 使用道具 举报
郑志祥(day10jdbc)
能够用自己的话阐述什么是JDBC?使用JDBC作用是什么?
JDBC是由sum公司提供的一套规范的借口,(让所有的数据库厂商都通用的接口)
数据库驱动;两个设备之间的沟通桥梁。

能够用自己的话阐述什么是SQL注入漏洞并给出解决方法?
SQL漏洞的产生是在用户名填写入了
aaa’ or ‘1=1 密码随意(方式一)
  aaa’ --      密码随意(方式二)
"select * from user where username = '"+username+"' and password = '"+password+"'"
Statement对于sql语句字符串只能进行拼接,容易出现SQL漏洞注入
解决方式;PreparedStatement则可以使用占位符 ?,通过这个来代替字符串拼接,解决了SQL漏洞注入的问题。
// 编写SQL语句:
String sql = "select * from user where username = ? and password = ?";
// 预编译SQL
pstmt = conn.prepareStatement(sql);
// 设置参数:
pstmt.setString(1, username);
pstmt.setString(2, password);
注释1,2,代替的?的位置,从1开始,跟索引区别
独立完成使用JDBC的预编译对象进行CRUD操作(重点)
1,加载驱动
2,获得连接
3,获得语句对象
4.执行代码
5,释放资源
如果是查找记得加上ResultSet结果集,多个查找用while遍历,如果是单个查找用if语句,还学学习了抽取工具类(不是很明白),大概知道是为了减少代码的重复性,而进行优化,
回复 使用道具 举报
吴俊斌

jdbc就是sun公司提供的接口,用java和数据库之间通信的桥梁

一般步骤:贾琏欲执事

1.加载驱动

就是通过Class.forName("com.mysql.jdbc.Driver");

2.获得连接

Connection 变量名=DriverManager.getConnection("jdbc:mysql://ip地址:端口/数据库名","用户名",密码);

3.创建Sql语句对象

Statement  变量名=连接对象名.createStatement();

4.执行sql语句
  查询的方法是:sql对象.executeQuery("sql执行语句")得到一个结果
  可以遍历它.
    while(结果对象.next){
       用对象.getString等获取想要输出的内容
}

5.释放资源

就是把对象.close

这会产生漏洞注入,解决方法就是使用preparedStatement代替,将有可能出现问题的用?号代替.再通过setString之类的方法
替换.这样在用户输入符号就会转成普通没有特殊意思的字符
回复 使用道具 举报
何平波
JDBC
1.什么是JDBC?  一套被规范的接口
java database connection (java与数据库的连接)
可以让我们在java代码中写sql语言,用java代码操作数据库.
2.精髓  贾琏欲执事  
(1)引包 导包
5行代码步骤
1.加载驱动
class.forname("jdbc包的路径")
2.获得连接: drivermanager.getconnection
写法:Connection conn =drivermanager.getconnection("url","数据库账户","数据库密码") 这里需要connection接受获得
Connection:和数据库连接的对象
        作用:1.创建执行sql语句
             2.管理实务..
     url:与数据库连接的路径   jdbc:mysql://localhost:3306/数据库名
                        jdbc:连接数据库的协议
                        mysql:是jdbc的子协议
        localhost:3306 连接的mysql数据库服务器的主机地址
        3306:mysql数据库服务器端口号
       
           user:与数据库连接的用户名
        passwo:与数据库连接的密码
注意:1.这里的localhost:3306连接的是自己的主机,如果连接的是其他主机的数据库填入的是其他主机的IP地址.
2.url中间的localhost:3306是可以省略不写的,因为这里连接的是自己的主机名.但不推介这种方式.
获得语句对象


3.获得执行sql语句的对象  Statement Statement = conn.createStatement();
  编写sql语句
  执行sql
遍历结果集
释放资源

3.工具类的抽取

注册驱动的方法:void 捕获注册方法

获得连接的方法:将驱动一并注册, 路径账户密码
                返回注册对象 方法一样
释放资源的方法
                释放资源 两个 或 3个
(statement , connection )  两个或3个参数
这种方法经常需要修改数据
私有的final来修饰需要床数据的对象  如注册 路径 账户 密码
然后放在静态代码块里
回复 使用道具 举报
  黄志彬
  今天学习了JDBC 就是Java的数据库(DataBase)接口( Connection),是两个应用之间的通信桥梁。
  Connerction 作用: 创建执行SQL语句,管理事务
  jdbc开发的5个步骤:贾琏欲执事
        1加载驱动。成功加载后会将driver类的示例注册到DriverManager类中
        2获得连接       
        3获得语句对象  编写sql,创建语句查询对象,执行sql,遍历(查询)
        4执行语句。  Statement接口提供了三种执行SQL语句的方法,executeQuery (查)和executeUpdate(增删改)及 execute。
        5释放资源。        操作完成后要把所有使用的JDBC对象全部关闭,以释放JDBC资源,关闭顺序和声明顺序相反
注意,导包的话要导java.sql下的包,测试方法不加静态修饰

        JDBC的增删改查

修改操作
设置参数里面的数是从1开始的,而不是索引


工具类的提取和配置文件:
JDBC所需要的四个参数(用户名, 密码, URL,driverClass驱动)
获取属性文件中的内容 为常量赋值
java中有一个对象Properties可以获得属性中的内容
解析属性文件中的内容要调用load方法 方法里面传入输入流
使用对象properties调用getProperty(传入属性文件中的key),获取到的值赋给JDBC所需要的四个参数

命名规则:除了数据,其他的尽量不要写中文,安装目录也不要写中文
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马