JDBC笔记介绍


  1.JDBC的设计  从一开始,Java技术开发人员就意识到了Java在数据库应用方面的巨大潜力。从1995年开始,他们就致力于扩展Java标准类库,使之可以运用SQL访问数据库。他们最初希望通过扩展Java,就可以让人们“纯”用Java语言与任何数据库进行通信。但是,他们很快发现这是一项无法完成的任务:因为业界存在许多不同的数据库,且他们所使用的协议也各不相同。尽管许多数据库供应商都表示支持Java提供一套数据库访问的标准网络协议,但是每一家企业都希望Java能采用自己的网络协议。  所有的数据库供应商和工具开发商都认为,如果Java能够为SQL访问提供一套“纯”JavaAPI,同时提供一个驱动管理器,以允许第三方驱动程序可以连接到特定的数据库,那它就会显得非常有用。这样,这样数据库供应商就可以提供自己的驱动程序,将其插入到驱动管理器中。这将成为一种向驱动管理器注册第三方驱动程序的简单机制。  这种接口组织方式遵循了微软公司非常成功的ODBC模式,ODBC为C语言访问数据库提供了一套编程接口。JDBC和ODBC都基于同一个思想:根据API编写的程序都可以与驱动管理器进行通信,而驱动管理器则通过驱动程序与实际的数据库进行通信。  所有这些都意味着JDBC API是大部分程序员不得不使用的接口。  JDBC:java database connectivity SUN公司提供的一套操作数据库的标准规范。  JDBC与数据库驱动的关系:接口与实现的关系。  JDBC规范(掌握四个核心对象):  DriverManager:用于注册驱动  Connection:表示与数据库创建的连接  Statement:操作数据库sql语句的对象  ResultSet:结果集或一张虚拟表  开发一个JDBC程序的准备工作:  JDBC规范在哪里:  JDK中:  java.sql.*;  javax.sql.*;  数据库厂商提供的驱动:jar文件  *.jar  2.开发一个JDBC程序  实现查询数据库中的数据显示在java的控制台中  1、创建数据库表,并向表中添加测试数据  2、创建java project项目,添加数据库驱动  3、实现JDBC操作  //1、注册驱动  DriverManager.registerDriver(new com.mysql.jdbc.Driver());  //2、创建连接  Connection conn =
DriverManager.getConnection(“jdbc:mysql://localhost:3306/mydb1″,”root”,”password”);  //3、得到执行sql语句的Statement对象  Statement stmt = conn.createStatement();  //4、执行sql语句,并返回结果  String sql = “select * from user”;  ResultSet rs = stmt.executeQuery(sql);  //5、处理结果  while(rs.next()){  System.out.println(rs.getObject(1));  ……  }  //6、关闭资源  rs.close();  stmt.close();  3.JDBC常用的类和接口详解  1、java.sql.Drivermanager类 : 创建连接  a、注册驱动  DriverManager.registerDriver(new com.mysql.jdbc.Driver());不建议使用  原因有2个:  导致驱动被注册2次  强烈依赖数据库的驱动jar  解决办法:  Class.forName(“com.mysql.jdbc.Driver”);  b、与数据库建立连接  static Connection getConnection(String url, String user, String password)
//试图建立到给定数据库 URL 的连接。  getConnection(“jdbc:mysql://localhost:3306/day06”, “root”, “password”);  URL:SUN公司与数据库厂商之间的一种协议。  jdbc:mysql://localhost:3306/mydb1  协议 子协议 IP :端口号 数据库  mysql: jdbc:mysql://localhost:3306/mydb1或者 jdbc:mysql:///mydb1(默认本机连接)  oracle: jdbc:oracle:thin:@localhost:1521:sid  Properties info = new Properties(); //要参考数据库文档  info.setProperty(“user”, “root”);  info.setProperty(“password”,”password”);  getConnection(String url, Properties info)  getConnection(String url)  DriverManager.getConnection(“jdbc:mysql://localhost:3306/day14?user=root&password=password”);  2、java.sql.Connection接口:一个连接  接口的实现在数据库驱动中。所有与数据库交互都是基于连接对象的。  Statement createStatement(); //创建操作sql语句的对象  3、java.sql.Statement接口:操作sql语句,并返回相应结果的对象(小货车)  接口的实现在数据库驱动中。用于执行静态SQL语句并返回它所生成结果的对象。  Resu开发云主机域名ltSet executeQuery(String sql); //根据查询语句返回结果集。只能执行select语句  int executeUpdate(String sql); //根据执行的DML(insert update
delete)语句,返回受影响的行数  boolean execute(String sql);
//此方法可以执行任意sql语句。返回boolean值,表示是否返回ResultSet结果集。仅当执行select语句,且有返回结果时返回true,
其它语句都返回false;无锡看妇科的医院 http://www.ytsgfk120.com/  4、java.sql.ResultSet接口:结果集(客户端存表数据的对象)  a、封装结果集的  提供一个游标,默认游标指向结果集第一行之前  调用一次next(),游标向下移动一行  提供一些get方法  封装数据的方法  Object getObject(int columnIndex); //根据序号取值,索引从1开始  Object getObject(String ColomnName); //根据列名取值。  将结果集中的数据封装到javaBean中  java的数据类型与数据库中的类型的关系  java 数据库  byte tityint  short smallint  int int  long bigint  float float  double double  String char varchar  Date date  boolean next(); //将光标从当前位置向下移动一行  int getInt(int colIndex); //以int形式获取ResultSet结果集当前行指定列号值  int getInt(String colLabel); //以int形式获取ResultSet结果集当前行指定列名值  float getFloat(int colIndex); //以float形式获取ResultSet结果集当前行指定列号值  float getFloat(String colLabel); //以float形式获取ResultSet结果集当前行指定列名值  String getString(int colIndex); //以String 形式获取ResultSet结果集当前行指定列号值  String getString(String colLabel); //以String形式获取ResultSet结果集当前行指定列名值  Date getDate(int columnIndex);  Date getDate(String columnName);  void close(); //关闭ResultSet 对象  b、可移动游标的方法  boolean next(); //将光标从当前位置向前移一行。  boolean previous(); //将光标移动到此 ResultSet 对象的上一行。  boolean absolute(int row); //参数是当前行的索引,从1开始根据行的索引定位移动的指定索引行。  void afterLast(); //将光标移动到末尾,正好位于最后一行之后。  void beforeFirst(); //将光标移动到开头,正好位于第一行之前。  4.SQL注入问题:preparedStatement  preparedStatement:预编译对象, 是Statement对象的子类  特点:  性能要高  会把sql语句先编译  sql语句中的参数会发生变化,过滤掉用户输入的关键字  PreparedStatement ps = null;  ResultSet rs = null;  try{  conn = DBUtils.getConnection();  String sql = “select * from user where name=? and password=?”;  ps = conn.prepareStatement(sql); //注:创建此对象时,要把sql语句先放进去  //给预编译sql语句赋值  ps.setString(1, name);  ps.setString(2, password);  rs = ps.executeQuery();  }catch(Exception e){  e.printStackTrace();  }

相关推荐: mysql版本选择最终建议

1、稳定版:选择开源的社区版的稳定版GA版本。2、选择mysql数据库GA版本发布后6个月以上的GA版本。3、要选择前后几个月没有大的BUG修复的版本,而不是大量修复BUG的集中版本。4、最好向后较长时间没有更新发布的版本。5、要考虑开发人员开发程序使开发云主…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/06 20:36
下一篇 06/06 20:36

相关推荐