`
nbtlxx
  • 浏览: 252741 次
  • 性别: 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方法添加信息(注意括号和单双引号的打法) //使用...

    中科软JAVA面试题

    - **封装**:将数据和操作数据的方法绑定在一起,隐藏对象的属性和实现细节,只对外提供公共访问方式,增强代码的安全性和稳定性。 - **继承**:子类可以继承父类的属性和方法,实现代码的复用和层次化结构,提高...

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

    在实际开发中,这两个接口是JDBC编程中不可或缺的部分,它们可以帮助我们更好地与数据库进行交互,提高代码的可读性和安全性。在使用时,注意遵循最佳实践,如使用try-with-resources语句来自动关闭资源,以及正确...

    mybatis xml配置

    - `useGeneratedKeys` 控制是否使用 JDBC 的自动生成键功能。 - `autoMappingBehavior` 设置自动映射的级别,从 none(完全关闭)到 full(自动映射所有字段)。 - `defaultExecutorType` 设定默认执行器类型,包括 ...

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

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

Global site tag (gtag.js) - Google Analytics