JDBC涉及对象

Connection对象

获得Connection对象:
方式一:通过DriverManager的静态方法getConnection()
DriverManager.getConnection(String dburl,user,password)
方式二:通过DataSource对象的方法getConnection()

数据库URL(dburl)

组成:jdbc:<subprotocal>:<subname>
jdbc:协议,是个固定值
subprotocal:子协议(值是 mysql 或 oracle …)
subname:数据库标识符

Statement对象->SQL语句对象

得到连接对象后就可以调用该对象的createStatement()创建SQL语句对象

执行查询语句

public ResultSet executeQuery(String sql)

执行非查询语句(insert delete update 或者DDL)

public int executeUpdate(String dql)

PreparedStatement对象

引出:解决Statement对象执行同一条语句效率低的问题
PreparedStatement对象将会对sql语句传给数据库时进行预编译

preparedStatement对象可以创建带参数的SQL语句,在SQL语句中指出接受哪些参数,然后进行预编译.
创建preparedStatement对象
public PreparedStatement prepareStatement(String sql)
该对象的SQL命令是传递给其构造方法,而不是execute() 这个对象返回的ResultSet是只能向前滚动的结果集

特点

SQL字符串可以包含一些参数,这些参数通过?作占位符,在SQL语句执行时进行替换
示例:

String str = "insert into 表名 values(?,?,?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);

注意:四个问号 分别对应索引为1 2 3 4,等下设置值时需要用到
在执行SQL语句之前需要用数据替换占位符(否则抛出异常)

pstmt.setString(1,'105');
pstmt.setString(2,'iPhone5手机');
pstmt.setDouble(3,'1490.00');
pstmt.setInt(4,5);
设置空值

public void setNull(占位符索引,intType)

执行预处理语句

查询使用 executeQuery()
ResultSet result = pstmt.executeQuery();
更新使用:int n = executeUpdate();
其他使用boolea b = pstmt.execute();

DataSource(数据源)

介绍:事先建立若干连接对象,将它们存放在数据库,连接池中供数据访问组件共享,避免为每个HTTP请求都创建一个连接对象
连接池预定义了一些连接,当应用程序需要连接对象时,就从连接池中取出,使用完毕再放回连接池

使用数据源注意!!!

我使用的是IDEA开发工具 没有META-INF目录 所以需要设置添加:
在这里插入图片描述
点击全选部分,然后选择Tomcat Server即可,然后在i项目中就会有META-INF目录 然后该目录下就会有context.xml然后再该文件书写配置文件即可

配置数据源

配置局部数据源
在META-INF下面新建一个context.xml文件
内容为:

<? xml version="1.0" encoding="utf-8"?>
<Context reloadable="ture">
<Resource
	name:"jdbc/webstoreDS"
	type="javax.sql.DataSource"
	MaxTotal="4"
	MaxIdle="2"
	driverClassName="com.mysql.cj.jdbc.Driver"
	url="jdbc:mysql://127.0.0.1:3306/数据库名?seSSL=true"
	username="用户名"
	password="密码"
	maxWaitMillis="5000"
/>
</Context>
使用数据源

Context context = new InitidContext();
DataSource dataSource = (DataSource)context.lookup("java:comp/env/dabc/webstoreDS")

ResultSet对象

select语句查询得到的记录集合(一般是一个记录表)
记录行从1开始
一个Statement对象一个时刻只能打开一个ResultSet对象

对结果集进行遍历

通过ResultSet对象的next()方法将游标定位到下一条记录
public boolean next() throws SQLException
返回ture表示新行是有效行 返回false表示记录表已经无记录

发布了103 篇原创文章 · 获赞 5 · 访问量 2244

猜你喜欢

转载自blog.csdn.net/weixin_42452726/article/details/102761632