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表都卡死卡主了...... ...
随机推荐
- 使用grep查找字符串
如下: grep -r 'target string' --exclude='pattern' dir/ 例子: grep -r Debug --exclude='*.js' ./ 查找本目录下除了j ...
- 最全面的Spring-Boot-Cache使用与整合
一:Spring缓存抽象 Spring从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口 ...
- iOS - 切换rootViewController时,销毁之前的控制器
一.iOS在切换根控制器时,如何销毁之前的控制器?(切换rootViewController时注意的内存泄漏) 首先.在iOS的ARC机制下,任何对象,当没有其他对象对他进行强引用时,都会被自动释放. ...
- cmake构建时指定编译器架构(x86 or x64)
vs2015 x64编译器为例,cmake命令如下: cmake -G "Visual Studio 14 Win64" path\to\source\dir 去掉Win64,就是 ...
- R和Tableau平行坐标图
R平行坐标图 library(lattice)data(iris)parallelplot( ~ iris[1:4], iris, groups = Species, horizontal.a ...
- C - Building Fence
Long long ago, there is a famous farmer named John. He owns a big farm and many cows. There are two ...
- Flask web开发之路二
今天创建第一个flask项目,主app文件代码如下: # 从flask这个框架导入Flask这个类 from flask import Flask #初始化一个Flask对象 # Flasks() # ...
- 客户端TortoiseSVN的安装及使用方法 (申明:来源于网络)
客户端TortoiseSVN的安装及使用方法 (申明:来源于网络) 地址:http://blog.chinaunix.net/uid-27004869-id-4112057.html
- C语言指针赋值前的指向问题
以下代码运行会得到什么结果? #include<stdio.h> int main() { int *k;//定义一个指针变量 *k=100;#给指针变量所指的内存赋值 printf(&q ...
- linux下安装cmake(安装opencv库)
apt-get install cmake cmake --version(显示版本号) cmake-gui(打开gui界面) 如果打不该GUI界面时候就需要apt-get install cmake ...