JDBC连接Mysql数据库及增删改查的操作
程序员文章站
2022-06-04 11:06:14
...
标题
废话不多说,直接上代码
import java.sql.;
import java.util.;
public class jdbcConnection {
private String url;
private String userName;
private String passWord;
public jdbcConnection(String url,String username,String password){
this.url=url;
this.userName=username;
this.passWord=password;
}
/**
* 获取数据库连接对象
* @return
*/
public Connection getConnection(){
this.loadingDriver();
try{
Connection con=DriverManager.getConnection(this.url,this.userName,this.passWord);
return con;
}catch (SQLException s){
System.out.println("连接数据库失败");
s.printStackTrace();
}
return null;
}
/**
* 执行select查询
* 将结果存下来
* @param con
* @param sql
* @return
*/
public List<Map<String,Object>> executeQuery(Connection con,String sql){
try{
Statement statement=con.createStatement();
ResultSet res=statement.executeQuery(sql);
ResultSetMetaData resData = res.getMetaData();
//表中字段数目
int num = resData.getColumnCount();
List<Map<String,Object>> dataList=new ArrayList<Map<String,Object>>();
while (res.next()){
Map<String,Object> rowData = new HashMap<String, Object>();
for(int i=1;i<=num;i++){
rowData.put(resData.getColumnName(i), res.getObject(i));
}
dataList.add(rowData);
}
res.close();
statement.close();
con.close();
return dataList;
}catch (Exception e){
e.printStackTrace();
System.out.println("执行sql出现错误");
}
return null;
}
/**
* 批量更新
*/
public int updateBatch(Connection con,String sql,Object[] args){
try{
int num=this.getParamNum(sql);
PreparedStatement ps= con.prepareStatement(sql);
int i=1;
for(Object param:args){
//没有加多类型转换
if(param.getClass().toString().equals("Integer")){
ps.setInt(i,Integer.parseInt(param.toString()));
}else {
ps.setString(i,param.toString());
}
i++;
}
int res= ps.executeUpdate();
return res;
}catch (SQLException e){
e.printStackTrace();
System.out.println("执行sql出错");
}
return 0;
}
private int getParamNum(String sql){
int num=0;
char[] ch=sql.toCharArray();
for(int i=0;i<ch.length;i++){
if(ch[i]=='?'){
num++;
}
}
return num;
}
/**
* 遍历输出select查询的结果
* @param dataList
*/
public void forItem(List<Map<String,Object>> dataList){
for(Map<String,Object> data:dataList ){
Iterator<Map.Entry<String,Object>> iterator= data.entrySet().iterator();
try{
while(iterator.hasNext()){
/* Map.Entry<String,Object> map=iterator.next();*/
for (Map.Entry<String,Object> map : data.entrySet()) {
System.out.println("字段:"+map.getKey());
System.out.println("值:"+map.getValue());
System.out.println();
iterator.next();}
}
}catch (NullPointerException e){
System.out.println("数组越界");
}
}
}
/**
* 加载数据库驱动
* 数据库驱动加载这块我说明一下 采用String Driver="com.mysql.jdbc.driver" 时驱动一直加载不上
* 我也不明白是怎么回事。
*/
private void loadingDriver(){
try {
Driver driver = new com.mysql.jdbc.Driver();
DriverManager.registerDriver(driver);
} catch (SQLException e) {
System.out.println("加载数据库驱动失败");
e.printStackTrace();
}
}
}
标题
主函数的调用:
public static void main(String[] args) {
String url = "jdbc:mysql:// IP地址或者域名 : 端口号 / 数据库名称 ?characterEncoding=utf8&useSSL=false";
String userName="数据库用户名";
String password="数据库密码";
//构造函数直接入参
jdbcConnection jdbccon=new jdbcConnection(url,userName,password);
//取得mysql连接对象
Connection connection=jdbccon.getConnection();
//用statement的exectQuery方法执行sql,将结果存放下来
List<Map<String,Object>> dataList=jdbccon.executeQuery(connection,"select * from user");
//将存的结果遍历
jdbccon.forItem(dataList);
//这块的方法类似于spring的 jdbcTemplate
//想了解的同学可以去看一下
Object[] arg={"456789",1};
int x=jdbccon.updateBatch(connection,"update user set user_password=? where user_id=?",arg);
if(x>0){
System.out.println("执行成功");
}
}
推荐阅读
-
python数据库-MySQL数据库的增删改查基本操作(49)
-
mysql数据库表的创建以及字段的增删改查操作及一些常用的查询命令介绍
-
Python实现连接MySql数据库及增删改查操作详解
-
jdbc连接sql server2017进行简单的增、删、改、查操作
-
Java通过JDBC连接数据库的三种方式!!!并对数据库实现增删改查
-
dbcp 数据库连接池配置及对数据库的增、删、改、查 jdbcjavadbcp
-
自写的利用PDO对mysql数据库增删改查操作类
-
mysql数据的基本操作(增删改查)及示例
-
java JDBC连接数据库 实现数据的增删改查
-
java 项目中通过JDBC 实现sqlite数据库的增删改查操作