一、JDBC 技术主要用于处理什么问题,有什么好处?
答:
1)、JDBC 是一种用于执行SQL语句的JavaAPI,为多种关系数据库提供统一访问
2)、程序员只需用 JDBC API 写一个程序,就可以访问所有的数据库
好处:
1)、不必为不同的平台写不同的应用程序,只需写一遍程序就可以使它在任意平台上运行,这也是Java语言“一次编写,到处运行”的优势
2)、JDBC 可以做三件事:与数据库建立连接,发送、处理数据库语句并处理结果

二、Class.forName(“Oracle.jdbc.driver.OracleDriver”); 的作用是?
答:
加载 Oracle 的 JDBC 驱动程序

三、请描述execute、executeQuery,executeUpdate 方法的返回值的含义?;
答:
1、executeQuery:
返回结果集(ResultSet),通常用于 select 语句。
2、executeUpdate:
返回此操作影响的行数(int),通常用于 insert, update, delete 语句。
3、execute:
返回布尔值(boolean),通常用于 insert,update,delete 语句。

四、ResultSet处理的getInt(“empno”) 和 getString(1)的含义?
答:
1、getString 来获取指定列的值,返回值也是 String,列号为 1 的列的数据类型
2、getInt 来获取指定列的值,返回值也是 int。列名为"empno"的数据类型

五、详述 JDBC 编程的 4 大步骤?
答:
1)、加载一个 Driver 驱动。
2)、创建数据库连接(Connection)
3)、创建 SQL 命令发送器 Statement ;通过 Statement 发送 SQL 命令并得到结果
4)、处理结果(select 语句和 ResultSet);处理完毕后关闭数据库资源
//在这里必须有数据库的驱动包

public class PublicJdbc {
//链接数据库的方法
public static Connection getConnection(){
Connection connection=null;
try {
//加载驱动
Class.forName(“com.mysql.jdbc.Driver”);
//链接数据库
connection= DriverManager.getConnection(“jdbc:mysql://127.0.0.1:3306/mysqljdb”,“root”,“Dylan5201314”);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//返回
return connection;
}
//关闭资源
public static void getClose(ResultSet re,Connection conn,PreparedStatement pr){
if(re!=null){
try {
re.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(pr!=null){
try {
pr.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public class PagingDaoImp {
Connection conn=null;
PreparedStatement pr=null;
ResultSet executeQuery =null;
//查询总条数
public Integer selectToalNumber() {
//sql语句
StringBuffer sql=new StringBuffer(“SELECT COUNT(*) AS NUMBER FROM PAGING “);
conn=PublicJdbc.getConnection();
int in=0;
try {
pr=conn.prepareStatement(sql.toString());
executeQuery= pr.executeQuery();
if(executeQuery.next()){
in=executeQuery.getInt(“NUMBER”);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
PublicJdbc.getClose(executeQuery, conn, pr);
}
return in;
}
}
六、SQL 注入攻击是怎么回事?
答:
当我们使用字符串拼接SQL:String sql=“select * from user_from where user=’”+user+”‘and password=’”+pass+"’";在这里用户密码是user和pass
2、发送器发送SQL命令并得到结果:xxx.executeQuery(sql);
3、当我们使用SQL:”select * from user_from where user=’abc’ and
password=’abc ‘ or ’1’=’1’”;

这条SQL语句中的用户名和密码并不正确,但仍然能访问数据表,所以存在风险。这就是SQL注入攻击

解决方案:
Statement的子接口PreparedStatement来实现,
优点:
A)、可读性性强不繁琐。
B)、安全。
C)、多次执行同一条sql语句,效率高。

PreparedStatement pr=conn.prepareStatement(sql.toString());
七、PreparedStatement(预编译 SQL 语句)有什么优势?
答:
注意:
如多次执行一个 SQL 语句,可以使用 PreparedStatement 对象。在创建 PreparedStatement对象时,通过传递不同参数值多次执行PreparedStatement 对象,可以得到多个不同的结果。
优点:
A)、可读性性强不繁琐。
B)、安全。
C)、多次执行同一条sql语句,效率高。

八、JDBC 中,事务是如何管理的?
答:
1)、 在 JDBC 中,事务操作缺省是自动提交。
系统将自动调用 commit()提交,否则调用 rollback()回滚
2)、事务操作方法都位于接口 java.sql.Connection 中
通过调用 setAutoCommit(false)来禁止自动提交.

try {
/**
此处省略查询的SQL语句
*/
conn.commit();
} catch (SQLException e) {
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}
九、【编程题】通过资源文件加载的方式连接数据库
答:
1、JDBC 最常用的资源文件类是 Properties
2、在src目录下创建一个db.properties文件
内容如下:

db.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/xxx
db.username=root
db.password=
3、获取Properties中的文件信息

InputStream in = ClassLoader.getSystemResourceAsStream(url); Properties p = new Properties();
p.load(in);
p.getProperty(“jdbc.url”);
4、使用DriverManager.getConnection()进行连接数据库
5、在关闭资源

读取资源文件的好处
1、地址或者用户名密码发生变动时,只需要在文件里改动即可。
2、而不需要在代码里改动,这也很好体现了代码的封装性原则。

15 Java面试之JDBC相关推荐

  1. java面试常见面试问题_Java面试准备:15个Java面试问题

    java面试常见面试问题 并非所有的访谈都将重点放在算法和数据结构上-通常,访谈通常只侧重于您声称是专家的语言或技术.在此类访谈中,通常没有任何"陷阱"问题,而是它们要求您利用内存 ...

  2. Java面试准备:15个Java面试问题

    并非所有的访谈都将重点放在算法和数据结构上-通常,访谈通常只侧重于您声称是专家的语言或技术.在此类访谈中,通常没有任何"陷阱"问题,而是它们要求您利用内存和使用该语言的经验–换句话 ...

  3. java面试jdbc问题_JDBC面试问题

    1. 什么是JDBC API,何时使用它? Java DataBase Connectivity API允许我们使用关系数据库.JDBC API接口和类是part java.sql和javax.sql ...

  4. 【2022最新Java面试宝典】—— Tomcat面试题(15道含答案)

    目录 1. Tomcat的缺省端口是多少,怎么修改? 2. tomcat 有哪几种Connector 运行模式(优化)? 3. Tomcat有几种部署方式? 4. tomcat容器是如何创建servl ...

  5. java面试常见问题之Hibernate总结

    1  Hibernate的检索方式 Ø  导航对象图检索(根据已经加载的对象,导航到其他对象.) Ø  OID检索(按照对象的OID来检索对象.) Ø  HQL检索(使用面向对象的HQL查询语言.) ...

  6. Java 面试知识点解析(七)——Web篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  7. Java 面试知识点解析(六)——数据库篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  8. Java 面试知识点解析(五)——网络协议篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  9. java面试笔试大汇总(一)

    java面试笔试题大汇总5 JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象:2.继承:3.封装:4. 多态性: 2.String是最基本的数据类型吗? 基本数据类型包括byte.int. ...

最新文章

  1. android 键盘右下角回车改为搜索
  2. 第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理...
  3. com.alibaba.druid.sql.parser.ParserException: ERRO
  4. 程序的加载和执行(一)——《x86汇编语言:从实模式到保护模式》读书笔记21
  5. JavaScript实现动态规划方法计算特定位置的斐波那契数fibonacciNth算法(附完整源码)
  6. 高职院校计算机基础课程要求,浅谈高职院校计算机的应用基础课程的改革.doc...
  7. 性能测试基本流程介绍(《软件性能测试过程详解与安全剖析》)
  8. html 拖拽坐标,Html+css实现拖拽导航条
  9. Quartz框架应用(1)
  10. Visual Basic里与Print有关的函数
  11. 基于深度学习检测驾驶员的走神行为
  12. 如何找到靠谱的微信小程序,公众号H5开发外包,定制开发公司?
  13. C# winform webbrowser如何指定内核为IE11?
  14. python安装netcdf4_Python气象绘图教程(二)
  15. 苹果电脑mac或苹果手机如何下载b站视频到电脑或手机本地?
  16. Python给Word加水印
  17. 【chromeEdge不兼容openModalDialog弹出模态窗口window.showModalDialog解决办法】
  18. 去中心化金融体系初现,MIGO挖掘DeFi+NFT+DAO深层潜能
  19. srs直播 java开发,通过srs实现直播
  20. 笔记本外接显示器鼠标卡顿、显示器掉帧解决办法

热门文章

  1. easyui数据表格重置_Python办公自动化,自动更新表格,告别繁琐
  2. 如何只在IE上加载CSS样式表
  3. 一个多maven项目聚合的实例
  4. GNUGK 作为Gatekeeper穿透防火墙和NAT
  5. STL学习笔记(一)
  6. Nmap扫描教程之基础扫描详解
  7. js、PHP将分数字符串转换为小数
  8. js同步获取文本框textarea输入的内容
  9. 迁移Win 2003 DHCP服务到2008R2
  10. ashx文件和HttpHandler