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表都卡死卡主了...... ...
随机推荐
- 【九天教您南方cass 9.1】 14 坐标数据的纠正
同学们大家好,欢迎收看由老王测量上班记出品的cass9.1视频课程 我是本节课主讲老师九天. 我们讲课的教程附件也是共享的,请注意索取 在测量空间中. 九天老师的联系方式 点击直接请教九天老师吧! ...
- git初始化本地项目并推送到git服务器
1.创建本地项目,在项目根目录执行git init命令 git init 2.在git服务器上创建一个仓库,这里使用GitHub创建一个仓库. 3.执行git remote add origin &l ...
- c++ linux socket编程 c++网络编程
声明:大部分代码来自这篇博客http://www.cnblogs.com/diligenceday/p/6241021.html, 感谢博主 思路: 思路很重要呦~~~ socket详细信息,思路:h ...
- ZeroMQ总结
Socket types Thread safety: ZeroMQ的socket是非线程安全的,并且ZeroMQ本身不建议在多个线程中传递同一个Socket,即使保证了线程同步. Socket ...
- Mac mysql 修改密码
如果你知道密码: mysqladmin -u root -p password 新密码 MYSQL数据库密码忘记: 1. 在系统偏好 中,中止MYSQL服务.: 2. cd/usr/local/mys ...
- eclipse安装emmet插件
http://www.cnblogs.com/matchless/archive/2013/04/10/3011973.html
- [React] 08 - Tutorial: evolution of code-behind
有了七篇基础学习,了解相关的知识体系,之后便是系统地再来一次. [React] 01 - Intro: javaScript library for building user interfaces ...
- ThinkingInJava 学习 之 0000006 复用类
1. 组合语法 将对象引用置于新类中. 2. 继承语法 衍生类自动获得基类中所有的域和方法 super关键字表示基类. 1. 初始化基类 当创建一个衍生类的对象时,该对象创建一个基类的子对象并包含子对 ...
- 【GIS】Vue修改图层透明度
1.添加透明度控制条 <input id="slider" type="range" min="0" max="1" ...
- chromedriver与chrome最新版本对应表
如果需要看到最新版的chromedriver和chrome版本对应问题,点击http://npm.taobao.org/mirrors/chromedriver/,点击最新版本的chromedrive ...