📄 connectiondb.java
字号:
/************************************************************************
*
*ConnectionDB提供向数据库查询与插入删除功能(executeQuery()与executeUpdate())
*用户使用这些方法时就像用PreparedStatement中的方法一样,不同的是我们不用考虑
*被操作参数的值类型,使用的这两个方法会帮我们自动实现类型的自动识别和转换
*
*注意:查询与插入删除函数的参数中如果包含基本类型,则需要把它们包装成包装类
**************************************************************************/
package mylib;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class ConnectionDB {
/****************************************
*executeQuery(String str,Object[] parameter)
*用法类似PreparedStatement,str为预编译的SQL语句,parameter[]为?占位符对应的值
******************************************/
public ResultSet executeQuery(String str,Object[] parameter) {
try {
con = DriverManager.getConnection(dataSource);
ps = con.prepareStatement(str);
for(int i=0;i<parameter.length;i++) {
/*按照浮点型数据查找*/
if(Double.class==parameter[i].getClass()) {
Double temp = (Double)parameter[i];
ps.setDouble(i+1,temp.doubleValue());
}
/*按照整形查找*/
if(Integer.class==parameter[i].getClass()) {
Integer temp = (Integer)parameter[i];
ps.setInt(i+1,temp.intValue());
}
/*按照字符类型查找*/
if(String.class==parameter[i].getClass()) {
ps.setString(i+1,(String)parameter[i]);
}
/*按照日期查找*/
if(java.sql.Date.class==parameter[i].getClass()) {
ps.setDate(1,(java.sql.Date)parameter[i]);
}
}
rs = ps.executeQuery();
}
catch(Exception ex) {
System.out.println("***ConnectionDB.executeQuery(String str,Object[] parameter){}中异常***");
System.out.println("*********************************");
ex.printStackTrace();
System.out.println("*********************************");
}
return rs;
}
/*******************************
*executeQuery(String str,Object[] parameter,int TYPE1,int TYPE2)
*
*******************************/
public ResultSet executeQuery(String str,Object[] parameter,int TYPE1,int TYPE2) {
try {
con = DriverManager.getConnection(dataSource);
ps = con.prepareStatement(str,TYPE1,TYPE2);
for(int i=0;i<parameter.length;i++) {
/*按照浮点型数据查找*/
if(Double.class==parameter[i].getClass()) {
Double temp = (Double)parameter[i];
ps.setDouble(i+1,temp.doubleValue());
}
/*按照整形查找*/
if(Integer.class==parameter[i].getClass()) {
Integer temp = (Integer)parameter[i];
ps.setInt(i+1,temp.intValue());
}
/*按照字符类型查找*/
if(String.class==parameter[i].getClass()) {
ps.setString(i+1,(String)parameter[i]);
}
/*按照日期查找*/
if(java.sql.Date.class==parameter[i].getClass()) {
ps.setDate(1,(java.sql.Date)parameter[i]);
}
}
rs = ps.executeQuery();
}
catch(Exception ex) {
System.out.println("***ConnectionDB.executeQuery(String str,Object[] parameter,int TYPE1,int TYPE2){}中异常***");
System.out.println("*********************************");
ex.printStackTrace();
System.out.println("*********************************");
}
return rs;
}
/*执行一条完整的查询语句*/
public ResultSet executeQuery(String str) {
try {
con = DriverManager.getConnection(dataSource);
ps = con.prepareStatement(str);
rs = ps.executeQuery();
}
catch(Exception ex) {
System.out.println("***ConnectionDB.executeQuery(String str){}中异常***");
System.out.println("*********************************");
ex.printStackTrace();
System.out.println("*********************************");
}
return rs;
}
/*执行一条完整的查询语句,具有给定类型和并发性的 ResultSet 对象,int TYPE1,int TYPE2*/
public ResultSet executeQuery(String str,int TYPE1,int TYPE2) {
try {
con = DriverManager.getConnection(dataSource);
ps = con.prepareStatement(str,TYPE1,TYPE2);
rs = ps.executeQuery();
}
catch(Exception ex) {
System.out.println("***ConnectionDB.executeQuery(String str,int TYPE1,int TYPE2){}中异常***");
System.out.println("*********************************");
ex.printStackTrace();
System.out.println("*********************************");
}
return rs;
}
/*******************************
*执行executeUpdate(String str,String[] parameter)
*用法类似PreparedStatement,str为预编译的SQL语句,parameter[]为?占位符对应的值
*******************************/
public int executeUpdate(String str,Object[] parameter) {
int rows = 0;
try {
con = DriverManager.getConnection(dataSource);
ps = con.prepareStatement(str);
//System.out.println(parameter.length);
for(int i=0;i<parameter.length;i++) {
/*如果parameter[i]为Double,则把它转换成基本类型存放到数据库*/
if(Double.class==parameter[i].getClass()) {
Double temp = (Double)parameter[i];
ps.setDouble(i+1,temp.doubleValue());
}
/*如果parameter[i]为Integer,则把它转换成基本类型存放到数据库*/
if(Integer.class==parameter[i].getClass()) {
Integer temp = (Integer)parameter[i];
ps.setInt(i+1,temp.intValue());
}
/*如果parameter[i]为String,则直接存进数据库*/
if(String.class==parameter[i].getClass()) {
ps.setString(i+1,(String)parameter[i]);
}
/*二进制数据*/
if(java.io.File.class==parameter[i].getClass()) {
System.out.println(parameter[i]);
java.io.File temp = (java.io.File)parameter[i];
ps.setBinaryStream(i+1,new java.io.FileInputStream(temp),(int)temp.length());
}
/*该语句有问题
if(java.sql.Date.class==parameter[i].getClass()) {
ps.setDate(i+1,(java.sql.Date)parameter[i]);
}*/
}
rows = ps.executeUpdate();
}
catch(Exception ex) {
System.out.println("***ConnectionDB.executeUpdate(String str,Object[] parameter){}中异常***");
System.out.println("*********************************");
ex.printStackTrace();
System.out.println("*********************************");
}
return rows;
}
/*执行一条完整的插入删除语句*/
public int executeUpdate(String str) {
int rows = 0;
try {
con = DriverManager.getConnection(dataSource);
ps = con.prepareStatement(str);
rows = ps.executeUpdate();
}
catch(Exception ex) {
System.out.println("***ConnectionDB.executeUpdate(String str){}中异常***");
System.out.println("*********************************");
ex.printStackTrace();
System.out.println("*********************************");
}
return rows;
}
/*************************************
*释放数据库连接资源
*************************************/
public void close() {
try {
if(ps!=null) {
ps.close();
}
if(con!=null) {
con.close();
}
}
catch(Exception ex) {
System.out.println("***ConnectionDB.close(){}中异常***");
System.out.println("*********************************");
ex.printStackTrace();
System.out.println("*********************************");
}
}
private Connection con = null;
private String dataSource = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ClothingShop;user=sa;password=loveying";
private PreparedStatement ps = null;
private ResultSet rs = null;
/*类定义文件被装载时装载Jdbc-Odbc桥接驱动到JVM*/
static {
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
}
catch(ClassNotFoundException cnex) {
System.out.println("***装载数据库驱动\"sun.jdbc.odbc.JdbcOdbcDriver\"时异常***");
System.out.println("*********************************");
cnex.printStackTrace();
System.out.println("*********************************");
}
}
/***************************************
*测试用的main()
******************************************/
public static void main(String[] args) {
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -