Java如何连接SQLServer,并实现查询、修改、删除方法
场景:A:在UI自动化时,删除数据时候,在界面UI提示“该XX已被使用,无法删除”。 这时候我们有需要做数据初始化的操作,需要把历史数据做删除,来确脚本运行的重复执行,和稳定性质。
B: 在做新增操作时候,需要校验数据是否存在后台。需要校验后台数据。
实现思路:
1.把数据库的连接地址、用户名、密码。 配置在框架配置文件处。
public class Const {
public static final String DB_URL = "XXXX";
public static final String DB_DatabaseName = "XXX";
public static final String DB_UserName = "XXX";
public static final String DB_Password = "XXX";
}
2.DBHelper 方法
package com.pensee.utils; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.pensee.config.Const; public class DBHelper {
static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
static String url = "jdbc:sqlserver://"+ Const.DB_URL +";DatabaseName="+ Const.DB_DatabaseName +"";
static Connection con = null;
static Statement st = null;
static ResultSet res = null; public static void dataBase() {
try {
Class.forName(driver);
con = DriverManager.getConnection(url, ""+ Const.DB_UserName +"", ""+ Const.DB_Password +"");
} catch (ClassNotFoundException e) {
System.err.println("装载 JDBC/ODBC 驱动程序失败。");
e.printStackTrace();
} catch (SQLException e) {
System.err.println("无法连接数据库");
e.printStackTrace();
}
} /**
* 查询SQL方法
* @param sql
* @return
* @throws SQLException
*/
public static ResultSet find(String sql) throws SQLException{//对数据库进行数据查询
//获得连接
dataBase();
st=con.createStatement();
try {
res=st.executeQuery(sql);
return res;
} catch (SQLException e) {
e.printStackTrace();
return null;
} }
/**
* SQL删除修改
* @param sql
* @return
* @throws SQLException
*/
public static boolean update(String sql) throws SQLException{//对增删改
//获得连接
dataBase();
st = con.createStatement();
try {
st.executeUpdate(sql);
return true;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
} }
3. 如何调用DB
String sql = "update hr_staff_policy set HolidayPolicy = 3 where staffno ='0092'";
boolean result = DBHelper.update(sql);
Assert.isTrue(result);
System.out.println("SQL执行结果为:" +DBHelper.update(sql));
4. 效果图:

框架如何增加JDBC
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
mvn install:install-file -Dfile=sqljdbc4.jar -Dpackaging=jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0
安装成功之后就可以在pom中引用sqljdbc依赖了。(已经加好上传了)
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import com.pensee.config.Const; public class DBHelper {
private static final Logger logger = LogManager.getLogger(DBHelper.class); static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
static String url = "jdbc:sqlserver://"+ Const.DB_URL +";DatabaseName="+ Const.DB_DatabaseName +""; private static Connection getDBConnection() {
Connection con = null;
try {
Class.forName(driver);
con = DriverManager.getConnection(url, ""+ Const.DB_UserName + "", ""+ Const.DB_Password +"");
} catch (ClassNotFoundException e) {
logger.error("装载 JDBC/ODBC 驱动程序失败。");
} catch (SQLException e) {
logger.error("无法连接数据库");
}
return con;
} private static void closeConnection(Connection con) {
try {
con.close();
} catch (SQLException e) {
;
}
} /**
* 查询SQL方法
* @param sql
* @return
* @throws SQLException
*/
public static ArrayList<String> query(String sql) throws SQLException{//对数据库进行数据查询
//获得连接
Connection con = getDBConnection();
Statement st = con.createStatement();
ResultSet res;
try {
res = st.executeQuery(sql);
} catch (SQLException e) {
throw new RuntimeException("查询失败: " + sql);
}
ArrayList<String> result = new ArrayList<String>();
while(res.next()) {
ResultSetMetaData rsmd = res.getMetaData();
int columnCount = rsmd.getColumnCount();
for (int i=0;i<columnCount;i++) {
result.add(res.getString(i+1));
}
}
closeConnection(con);
return result;
}
/**
* SQL删除修改
* @param sql
* @return
* @throws SQLException
*/
public static void updateDB(String sql) throws SQLException{//对增删改
//获得连接
Connection con = getDBConnection();
Statement st = con.createStatement();
int recordsNo = st.executeUpdate(sql);
if(recordsNo == 0) {
throw new RuntimeException("执行失败: " + sql);
} else if(recordsNo == 1){
logger.info("更新成功1条: " + sql);
} else {
logger.info("更新成功条数: " + recordsNo);
}
closeConnection(con);
} //存在数据的时候更新,不存在的时候不需要更新,影响数据行数为0或者1
public static void updateDBIfExist(String sql) throws SQLException{//对增删改
//获得连接
Connection con = getDBConnection();
Statement st = con.createStatement();
int recordsNo = st.executeUpdate(sql);
logger.info("更新成功的record数量 " + recordsNo);
closeConnection(con);
} public static void deleteVacationBalance(String code, String staffId) throws SQLException {
String sql = "DELETE lb FROM Leave_Balance lb LEFT JOIN Leave_Code lc ON lc.id = lb.LeaveCode_id "
+ "WHERE lc.LeaveBenefitCode ='" + code + "' and taffno ='" + staffId + "'";
updateDB(sql);
} /**
* 删除历史组织架构
* @param code
* @param staffId
* @throws SQLException
*/
public static void deleteHistoryOrganzationalStructure(String hisname) throws SQLException {
String sql = "DELETE FROM Org_DataType WHERE NAME='" + hisname + "'";
updateDB(sql);
} /**
* 取得员工工号,该员工没有卡,用于case E-653
* @return
* @throws SQLException
*/
public static String getStaffNoWithoutCard() throws SQLException {
String sql = "SELECT ac.staffNo FROM At_Card ac INNER JOIN hr_Staff hs ON ac.StaffNo = hs.StaffNo "
+ "WHERE ac.No = '' AND hs.StaffType = 'Active'";
String id = query(sql).get(0);
String sqlDelete = String.format("DELETE ap FROM At_PunchClockInfo ap INNER JOIN At_Card ac ON ap.At_Card_id = ac.Id "
+ "WHERE ac.StaffNo ='%s'", id);
updateDB(sqlDelete);
return id;
}
}
六: jenkins配置增加JDBC

Java如何连接SQLServer,并实现查询、修改、删除方法的更多相关文章
- sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器)
sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器) 我们日常使用SQL Server数据库时,经常遇到需要在实例Instance01中跨实例访问Instanc ...
- mysql 数据库 添加查询 修改 删除
cmd 命令行模式操作数据库 添加查询 修改 删除 ( 表 字段 数据) 一 查看数据库.表.数据字段.数据 1 首先配置环境变量 进入mysql 或者通过一键集成工具 打开mysql命令行 ...
- navicate premium连接sqlserver时报08001错误的解决方法
---恢复内容开始--- navicate premium连接sqlserver时报08001错误的解决方法 1.自己一直使用navicate连接sqlserver,但是自从自己的电脑安装了sqlse ...
- spring boot系列(四)spring boot 配置spring data jpa (保存修改删除方法)
spring boot 使用jpa在pom.xml在上文中已经介绍过.在这里直接介绍各个类文件如何编写: 代码结构: domain(存放实体类文件): repository(存放数据库操作文件,相当于 ...
- java实现连接mysql数据库单元测试查询数据项目分享
1.按照javaweb项目的要求逐步建立搭建起机构,具体的类包有:model .db.dao.test;具体的架构详见下图: 2.根据搭建的项目架构新建数据库test和数据库表t_userinfo并且 ...
- java JDBC连接 Sqlserver 非默认的实例名问题
一般我们在连接数据库的时候都是用的默认实例名,今天遇到了用非默认是实例名:连接代码如下(Java): <property name="url" value="jdb ...
- SQLSERVER sa 用户密码修改的方法
本次驱动人生病毒的收获 . 偷懒总会有报应. . 应用(数据库或者是web应用nginx等.)都不要使用最高级别权限用户来使用 虽然这样的环境问题最少. . 密码还是需要定期更换的,虽然有成本,但是也 ...
- Java代码操作properties文件(读取,新增/修改,删除)
项目中需要用到操作properties文件中的数据,记录一下 package com.bonc.savepic.save; import java.io.FileNotFoundException; ...
- 解决mysql表不能查询修改删除等操作并出现卡死
问题现象1:进程wait卡住 测试环境mysql出现了一个怪表:select查询表卡死,alter修改表卡死,甚至我不想要这个表了,delete.truncate.drop表都卡死卡主了...... ...
随机推荐
- 【emWin】例程三十一:窗口对象——Multipage
简介: ULTIPAGE 类似于笔记本中的分隔卡或文件柜中的标签.通过使用MULTIPAGE 小工具,应用程序可为窗口或对话框的相同区域定义多个页面.每个页面包含特定 类型的信息或用户选择相应页面时应 ...
- hdoj:2023
#include <iostream> #include <string> #include <vector> ][],b[],c[]; using namespa ...
- Ogre2.1 Hlms与渲染流程
在我前面三篇说明Ogre2.x的文章里,第一篇大致说了下Hlms,第二篇说了下和OpenGL结合比较紧的渲染,本文用来说下Hlms如何影响渲染流程中,因为有些概念已经在前面二文里说过了,本文就不再提, ...
- java对象与map对象相互转换
/** * 使用org.apache.commons.beanutils进行转换 */ class A { public static Object mapToObject(Map<String ...
- Springboot学习笔记(五)-条件化注入
前言 将Bean交给spring托管很简单,根据功能在类上添加@Component,@Service,@Controller等等都行,如果是第三方类,也可以通过标有@Configuration的配置类 ...
- mysql+redis
微博的系统架构,想用mysql+redis配合使用,具体操作步骤: 写入数据到Redis,,然后在写个运行cron的脚本,美妙读内存,并写入数据库即可. 使用注意: 1.MySQL使用需要注意的地方: ...
- 设计模式-创建型模式,python享元模式 、python单例模式(7)
享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能.这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式. 享元模式尝 ...
- 设计模式-行为型模式,python备忘录模式
备忘录模式 备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象.备忘录模式属于行为型模式. 介绍 意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该 ...
- mysql性能调整三板斧
大意是,用2/8原则,多快好省的解决大部分事情.所以三板斧,仅限整体调整,不牵扯具体细节. 1.innodb 使用innodb引擎 2.innodb_buffer_pool 调整和innodb有关的参 ...
- django通用视图(类方法)
这周是我入职的第一周,入职第一天看到嘉兴大佬的项目代码.视图中有类方法,我感到很困惑. 联想到之前北京融360的电话面试,问我有无写过类方法……看来有必要了解下视图的类方法,上网搜了很多,原来这就是所 ...