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】例程二十七:窗口对象——Listview
简介: LISTVIEW小工具可在具有多个列的列表中选择某个元素.由于LISTVIEW小工具包含了 一个HEADER小工具,因此可对列加以管理(排序等).所创建的LISTVIEW 既可以无环绕型框架窗 ...
- Excel中substitute替换函数的使用方法
问题现象:在Excel中,对几千条数据按照时间顺序排序,但总是有部分数据不参与排序,单纯用单元格调整不起任何作用. 解决办法: 数据排列问题最重要的是数据格式的一致性.解决这个问题,建议按如下步骤: ...
- Android studio 怎么使用单元测试(不需要device)
关于单元测试的使用,写代码过程中有时候需要检测下代码逻辑的可行性与正确性,又不想通过设备运行,那么就可以通过单元测试跑下代码~ 1.首先建立一个Android studio的Android项目: 2. ...
- Oracle 11g EM删除重建的方法
虚拟机里的Oracle 11g好长时间没用了,突然打开之后发现EM无法访问了,EM可以重建,于是也不打算查找原因了,直接使大招 OS:Windows Server 2012 Oracle:11g R2 ...
- 为什么我们做分布式使用Redis?
绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知.这里对 Redis 常见问题做一个总结,解决 ...
- [原]openstack-kilo--issue(二十二) 虚拟机的vnc console图像调用错误
[问题点] 在打开node compute 上vm的vnc console窗口时候发现vm1-compute1调用的是vm1-controller上的vnc图像 =================== ...
- NHibernate中的API
本篇文章介绍的是NHibernate的各种API及其作用. 下图描述了NHibernate的API在分层架构中的作用,下面将进行详细说明. NHibernate的接口大致分为四类:1. 被应用程序调 ...
- windows 开启热点的命令行工具
hotspot.bat @echo off @echo. setlocal enabledelayedexpansion if "%1" == "set" ( ...
- 数据库高分笔记01:事务ACID
作者:arccosxy 转载请注明出处:http://www.cnblogs.com/arccosxy/ 事务就是一组原子性的SQL查询,或者说一个独立的工作单元.如果数据库引擎能够成功地对数据库应 ...
- 用nodejs搭建一个简单的服务监听程序
作为一个从业三年左右的,并且从事过半年左右PHP开发工作的前端,对于后台,尤其是对以js语言进行开发的nodejs,那是比较有兴趣的,虽然本身并没有接触过相关的工作,只是自己私下做的一下小实验,但是还 ...