`
nbtlxx
  • 浏览: 249128 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

jdbc学习(三): 使用statement, preparedStatment进行数据操作

阅读更多
使用statement进行数据的查询,基本步骤如下:
* 1. 初始化simpleDbSource对象
* 2. 获得getconnection
* 3. createStatement 获得查询语句
* 4. executeUpdate, 执行更新语句
* 5. 关闭使用的statement, connection, 注意次序不要弄错
*
* 注意:更新语句,执行过一次后,column需要递增,否则报错
/**
 * 
 */
package db;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * @author sean
 * 
 * 1. 初始化simpleDbSource对象
 * 2. 获得getconnection
 * 3. createStatement 获得查询语句
 * 4. executeUpdate, 执行更新语句
 * 5. 关闭使用的statement, connection, 注意次序不要弄错
 * 
 * 注意:更新语句,执行过一次后,column需要递增,否则报错
 */
public class StatementDemo {

	private static String insertSql="insert into user values('7','sean','sean@mail.com','hellofromsean')";
	private static String querySql ="select * from user";

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		DBSource dbSource;
		Connection conn = null;
		java.sql.Statement stmt = null;
		
		try {
			dbSource = new SimpleDBSource();
			conn = dbSource.getConnect();
			stmt = conn.createStatement();
			
			//数据库更新工作,包括create, drop, update, insert etc.
			stmt.executeUpdate(insertSql);
			System.out.println("执行成功"+ insertSql);
			
			//进行数据库查询
			ResultSet rs = stmt.executeQuery(querySql);
			
			//进行遍历
			while(rs.next()){
				System.out.println(rs.getInt(1)+ "\t");
				System.out.println(rs.getString(2)+ "\t");
				System.out.println(rs.getString(3)+ "\t");
				System.out.println(rs.getString(4)+ "\t");
				System.out.println("**********************");
			}
			
			
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		//依次关闭statement和conn数据库连接对象,清空资源
		finally{
			if(stmt!= null){
				try {
					stmt.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				stmt= null;
			}
			if(conn!=null){
				try {
					conn.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				conn= null;
			}
		}
	}
}


/**
*
*/
package db;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
* @author sean
*
* 1. 初始化simpleDbSource对象
* 2. 获得getconnection
* 3. createPreparedStatement 获得查询语句
* 4. 设置具体更新内容,setInt(colIndex, value), setString(colIndex,value)
* 4. executeUpdate, 执行更新语句
* 5. 关闭使用的PreparedStatementstatement, connection, 注意次序不要弄错
*
* 注意:更新语句,执行过一次后,column需要递增,否则报错
*/
public class PreparedStatementDemo {

private static String querySql ="select * from user";
private static String pstmtSql = "insert into user values(?,?,?,?)";

Connection conn1;
static Statement stmt;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
DBSource dbSource;
Connection conn = null;
java.sql.PreparedStatement pstmt = null;

try {
dbSource = new SimpleDBSource();
conn = dbSource.getConnect();
pstmt = conn.prepareStatement(pstmtSql);

pstmt.setInt(1, 9);
pstmt.setString(2, "sean");
pstmt.setString(3, "my@hotmail.com");
pstmt.setString(4, "add some comments");

//数据库更新工作,包括create, drop, update, insert etc.
pstmt.executeUpdate();

//清空设置的参数,为后续更新准备
pstmt.clearParameters();

System.out.println("执行成功"+ pstmtSql);

//进行数据库查询
Connection conn1 = dbSource.getConnect();
Statement stmt = conn1.createStatement();
ResultSet rs = stmt.executeQuery(querySql);

//进行遍历
while(rs.next()){
System.out.println(rs.getInt(1)+ "\t");
System.out.println(rs.getString(2)+ "\t");
System.out.println(rs.getString(3)+ "\t");
System.out.println(rs.getString(4)+ "\t");
System.out.println("**********************");
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

//依次关闭statement和conn数据库连接对象,清空资源
finally{
if(stmt!= null){
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
stmt= null;
}

if(pstmt!= null){
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
pstmt= null;
}

if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
conn= null;
}
}
}
}





分享到:
评论

相关推荐

    JDBC专题(二)-JDBC对数据库进行CRUD

    - Statement,preparedStatment,CallableStatment:接口:向数据库发送sql,并且得到数据库返回的信息。 - ResultSet:结果集,Statement执行完sql---select之后,会返回结果,结果给了ResultSet

    2014_05_12 javabean类型的辅助类存储传输接收数据.

    //生成statement对象对(数据库进行操作)(数据库的事务处理) //Statement sta=connection.createStatement(); //使用executeupdate方法添加信息(注意括号和单双引号的打法) //使用...

    利用P6SPY +SQL Profiler调试、记录、统计web app对数据库的操作

    利用P6SPY +SQL Profiler调试、记录、统计web ...可以查看到PreparedStatment的执行最终的SQL语句。 有详细的操作说明 下面的这个是集成的完整版。。太大了就不上传了。自己下吧 jahia_v6_CommunityEdition_r25203.zip

    Java使用PreparedStatement接口及ResultSet结果集的方法示例

    主要介绍了Java使用PreparedStatement接口及ResultSet结果集的方法,结合实例形式分析了PreparedStatement接口及ResultSet结果集的相关使用方法与操作注意事项,需要的朋友可以参考下

    仿Haier 海尔家电家居触屏版html5响应式手机wap企业网站模板.zip

    触屏版自适应手机wap软件网站模板 触屏版自适应手机wap软件网站模板

    手机wap网站 仿腾讯新闻.zip

    触屏版自适应手机wap软件网站模板 触屏版自适应手机wap软件网站模板

    机械设计多层储物架sw18可编辑非常好的设计图纸100%好用.zip

    机械设计多层储物架sw18可编辑非常好的设计图纸100%好用.zip

    基于普中51开发板的超声波测距+蜂鸣器报警 (附开发板原理图)

    基于普中51开发板的超声波测距+蜂鸣器报警 (附开发板原理图) 基于普中51开发板的超声波测距+蜂鸣器报警 (附开发板原理图)

    【重磅、详细、2022更新!】1990-2022上市公司环境保护税(排污费)数据大合集!

    【原创整理,严禁任何团队和个人转载获利,转载必究!】 环境保护 税的实施效应是近年来研究的热点方向之一,将上市公司环境保护税与企业创新、企业治理 等领域问题的实证研究更是如日中天。附件内为1990-2022上市公司环境保护税( 排污费)数据大合集,包括上市公司应缴环境保护税、实缴环境保护税及分项数据,样本期 长达33年!累计涵盖近15w+观测值数量,3500+样本企业,数据涵盖年度与月度 变量,可根据需要自行筛选选用!本数据集包括参考来自权威文献做法构建的衡量上市公司 环境保护税的详细数据,包括测算出的最终指标以及所有原始数据! 附 件内所有文件均包括xls、dta格式面板数据,无偿赠送您权威参考文献原文、参考代 码、原始数据(指标构建所需的各个变量都可直接查到,充分保证数据真实性、准确性!! )以及2022最新版本上市公司年度信息,充分节约您宝贵的时间,提升科研效率!本数 据集可直接用Stata、Eviews等软件进行计量检验!本数据集适用于所有涉及上 市公司环境保护税效应方向的实证研究与理论分析,更是非常适合在此基础上进行拓展研究 ,能够帮助大家高

    自动编码器autoencoder-python源码.zip

    自动编码器autoencoder-python源码.zip

    node-v10.16.2-linux-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    ONNXRuntime部署yolov5-lite目标检测包含C++和Python 源码+模型+说明.zip

    ONNXRuntime部署yolov5-lite目标检测包含C++和Python 源码+模型+说明.zip

    省级2008-2020信息传输、软件和信息技术服务业城镇单位就业人员+软件业务收入等

    省级2008-2020信息传输、软件和信息技术服务业城镇单位就业人员+软件业务收 入等 指标包括:信息传输、软件和信息技术服务业城镇单位就业人员(万人)、软件业务 收入(万元)、高技术产品出口额占商品出口额比重(%)

    基于matlab图像处理的碎纸片的拼接复原内含数据集和源码.docx

    本文档是课题研究的研究报告内含调研以及源码设计以及结果分析

    Unity3D版本游戏源码2-97草莓大作战游戏开发模板BerryMatch-Three4.2

    Unity3D版本游戏源码2-97草莓大作战游戏开发模板Berry Match-Three 4.2提取方式是百度网盘分享地址

    南京政府微门户触屏版手机wap政府网站模板下载.zip

    触屏版自适应手机wap软件网站模板 触屏版自适应手机wap软件网站模板

    node-v12.1.0-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    某城市表层土壤重金属污染分析方案设计以及结果分析.doc

    本文档是课题研究的研究报告内含调研以及源码设计以及结果分析

    unity开发的相关知识什么是unity开发以及学习的意义

    unity开发

    HTML5+CSS+JS精品网页模板100 大学生期末大作业 Web前端网页制作

    HTML5+CSS+JS精品网页模板,设置导航条、轮翻效果,鼠标滑动效果,自动弹窗,点击事件、链接等功能;适用于大学生期末大作业或公司网页制作。响应式网页,可以根据不同的设备屏幕大小自动调整页面布局; 支持如Dreamweaver、HBuilder、Text 、Vscode 等任意html编辑软件进行编辑修改; 支持包括IE、Firefox、Chrome、Safari主流浏览器浏览; 下载文件解压缩,用Dreamweaver、HBuilder、Text 、Vscode 等任意html编辑软件打开,只需更改源代码中的文字和图片可直接使用。图片的命名和格式需要与原图片的名字和格式一致,其他的无需更改。如碰到HTML5+CSS+JS等专业技术问题,以及需要对应行业的模板等相关源码、模板、资料、教程等,随时联系博主咨询。 网页设计和制作、大学生网页课程设计、期末大作业、毕业设计、网页模板,网页成品源代码等,5000+套Web案例源码,主题涵盖各行各业,关注作者联系获取更多源码; 更多优质网页博文、网页模板移步查阅我的CSDN主页:angella.blog.csdn.net。

Global site tag (gtag.js) - Google Analytics