1、首先,先创建一个连接数据库的工具类:

 package gu.db.util;

 import java.sql.Connection;
import java.sql.DriverManager; public class ConnectionFactory {
public static Connection getConnection(String url,String name,String passwd){
Connection con = null;
String className = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
try{
Class.forName(className);
con = DriverManager.getConnection(url, name, passwd);
}catch(Exception e){
e.printStackTrace();
} return con;
}
}

2、抽象父类dao:

 package gu.db.dao;

 import gu.db.helper.HelpConstants;
import gu.db.util.ConnectionFactory;
import gu.model.basis.AbstractData; import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.ArrayList; public abstract class AbstractDao {
protected String url = "jdbc:sqlserver://localhost:1433;databasename = Task";
protected String username = "sa";
protected String passwd = ""; public String editRecords(ArrayList<AbstractData> datas){
ArrayList<AbstractData> addList = new ArrayList<AbstractData>();
ArrayList<AbstractData> deleteList = new ArrayList<AbstractData>();
ArrayList<AbstractData> updateList = new ArrayList<AbstractData>();
int count = datas.size();
for(int index = 0;index < count ;index++){
AbstractData data = datas.get(index);
byte operCode = data.getOper_code();
if(operCode == HelpConstants.ADD){
addList.add(data);
}else if(operCode == HelpConstants.DELETE){
deleteList.add(data);
}else if(operCode == HelpConstants.UPDATE){
updateList.add(data);
}
}
int add = addRecords(addList);
int delete = deleteRecords(deleteList);
int update = updateRecords(updateList);
StringBuffer buffer = new StringBuffer();
buffer.append("成功添加"+add+"条记录,成功删除"+delete+"条记录,成功修改"+update+"条记录");
return buffer.toString(); } public String[] getColumnNames(String sql){
String[] columnNames = null;
Connection con = null;
Statement state = null;
ResultSet rs = null;
try{
con = ConnectionFactory.getConnection(url, username, passwd);
state =con.createStatement();
rs = state.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
int size = rsmd.getColumnCount();
columnNames = new String[size];
for(int i = 0;i < size;i++){
columnNames[i] = rsmd.getColumnLabel(i+1);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(rs != null){
rs.close();
}
if(state != null){
state.close();
}
if(con != null){
con.close();
}
}catch(Exception ex){
ex.printStackTrace();
} }
return columnNames;
} public abstract int addRecords(ArrayList<AbstractData> datas);
public abstract int deleteRecords(ArrayList<AbstractData> datas);
public abstract int updateRecords(ArrayList<AbstractData> datas);
}

3、以User类为例:

 package gu.db.dao;

 import gu.db.util.ConnectionFactory;
import gu.model.basis.AbstractData;
import gu.model.login.User; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList; public class UserDao extends AbstractDao { @Override
public int addRecords(ArrayList<AbstractData> datas) {
// TODO Auto-generated method stub
int amount = 0;
Connection con = null;
PreparedStatement psmt = null;
String sql = "insert into users (user_name,user_passwd,user_role) values (?,?,?)";
try{
con = ConnectionFactory.getConnection(url, username, passwd);
psmt = con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
boolean old = con.getAutoCommit();
con.setAutoCommit(false);
int size = datas.size();
for(int index = 0;index < size;index++){
User user = (User) datas.get(index);
psmt.setString(1, user.getUser_name());
psmt.setString(2, user.getUser_passwd());
psmt.setByte(3, user.getUser_role());
psmt.addBatch();
}
int[] result = psmt.executeBatch();
con.commit();
con.setAutoCommit(old); for(int i = 0;i < result.length;i++){
amount += result[i];
}
}catch(Exception e){
try{
amount = 0;
con.rollback();
}catch(Exception ex){
ex.printStackTrace();
}
e.printStackTrace();
}finally{
try{
if(psmt != null){
psmt.close();
}
if(con != null){
con.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
return amount;
} @Override
public int deleteRecords(ArrayList<AbstractData> datas) {
// TODO Auto-generated method stub
int amount = 0;
Connection con = null;
PreparedStatement psmt = null;
String sql = "delete users where user_name = ?";
try{
con = ConnectionFactory.getConnection(url, username, passwd);
psmt = con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
boolean old = con.getAutoCommit();
con.setAutoCommit(false);
int count = datas.size();
for(int index = 0;index < count;index++){
User user = (User)datas.get(index);
psmt.setString(1, user.getUser_name());
psmt.addBatch();
}
int[] result = psmt.executeBatch();
con.commit();
con.setAutoCommit(old); for(int i = 0;i < result.length;i++){
amount += result[i];
}
}catch(Exception e){
try{
amount = 0;
con.rollback();
}catch(Exception ex){
ex.printStackTrace();
}
e.printStackTrace();
}finally{
try{
if(psmt != null){
psmt.close();
}
if(con != null){
con.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
return amount;
} @Override
public int updateRecords(ArrayList<AbstractData> datas) {
// TODO Auto-generated method stub
int amount = 0;
Connection con = null;
PreparedStatement psmt = null;
String sql = "update users set user_passwd = ?,user_role = ? where user_name = ?";
try{
con = ConnectionFactory.getConnection(url, username, passwd);
psmt = con.prepareStatement(sql, ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
boolean old = con.getAutoCommit();
con.setAutoCommit(false);
int count = datas.size();
for(int index = 0;index < count;index++){
User user = (User)datas.get(index);
psmt.setString(1, user.getUser_passwd());
psmt.setByte(2, user.getUser_role());
psmt.setString(3, user.getUser_name());
psmt.addBatch();
}
int[] result = psmt.executeBatch();
con.commit();
con.setAutoCommit(old); for(int i = 0;i < result.length;i++){
amount += result[i];
}
}catch(Exception e){
try{
amount = 0;
con.rollback();
}catch(Exception ex){
ex.printStackTrace();
}
e.printStackTrace();
}finally{
try{
if(psmt != null){
psmt.close();
}
if(con != null){
con.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
return amount;
}
//登录验证
public User anthenticate(String name,String pw,byte role){
User user = null;
Connection con = null;
Statement state = null;
ResultSet rs = null;
String sql = "select user_name,user_passwd,user_role from users where user_name = \'" + name + "\' " +
"and user_passwd = \'" + pw + "\' " +
"and user_role = \'" + role + "\'";
try{
con = ConnectionFactory.getConnection(url, username, passwd);
state = con.createStatement();
rs = state.executeQuery(sql);
if(rs.next()){
user = new User(rs.getString(1),rs.getString(2),rs.getByte(3)); //验证成功,产生对象
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(rs != null){
rs.close();
}
if(state != null){
state.close();
}
if(con != null){
con.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
return user;
} public ArrayList<User> getUsers(){
ArrayList<User> users = new ArrayList<User>();
Connection con = null;
Statement state = null;
ResultSet rs = null;
String sql = "select * from users"; try{
con = ConnectionFactory.getConnection(url, username, passwd);
state = con.createStatement();
rs = state.executeQuery(sql);
while(rs.next()){
User user = new User(rs.getString(1),rs.getString(2),rs.getByte(3));
users.add(user);
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(rs != null){
rs.close();
}
if(state != null){
state.close();
}
if(con != null){
con.close();
}
}catch(Exception e){
e.printStackTrace();
}
}
return users;
} public String[] ColumnNames(String[] names){
String[] columnNames = new String[names.length+3];
for(int i = 0;i < names.length;i++){
columnNames[i] = names[i];
}
columnNames[names.length] = "添加";
columnNames[names.length+1] = "删除";
columnNames[names.length+2] = "修改";
return columnNames;
}
}

JDBC连接sql server数据库操作的更多相关文章

  1. JDBC连接sql server数据库及其它

    JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的 ...

  2. JDBC连接sql server数据库的详细步骤和代码

    JDBC连接sql server数据库的详细步骤和代码 JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Ja ...

  3. Java使用JDBC连接SQL Server数据库|实现学生成绩信息系统

    Java实验四 JDBC 使用SQL Server数据库或者MySQL数据库各自的客户端工具,完成如下任务: (1)创建数据库students: (2)在数据students中创建表scores,包括 ...

  4. JDBC连接sql server数据库的详细步骤和代码 转

    JDBC连接sql server数据库的步骤如下: 1.加载JDBC驱动程序(只做一次): 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.C ...

  5. Java使用JDBC连接SQL Server数据库

    Java使用JDBC连接SQL Server数据库 1.下载驱动 1.下载Microsoft SQL Server JDBC 驱动程序 https://docs.microsoft.com/zh-cn ...

  6. 编写Java程序,使用JDBC连接SQL Server数据库

    返回本章节 返回作业目录 需求说明: 使用JDBC连接SQL Server数据库 SQL Server数据库位于192.168.2.101. 所需连接的数据库为eshop_db,用户名为test,密码 ...

  7. JDBC连接SQL Server数据库

    测试环境 数据库:SQL Server 2008 R2,创建数据库名:TestDemo,表:User,字段如下:   字段 字段 id UName UPass sqljdbc.jar下载地址:依赖的J ...

  8. JDBC连接SQL Server代码模板

    *                  JDBC连接SQL Server数据库 代码模板* Connection: 连接数据库并担任传送数据的任务:* Statement :  执行SQL语句:* Re ...

  9. 详解连接SQL Server数据库的方法,并使用Statement接口实现对数据库的增删改操作

    总结一下,连接SQL Server数据库需要以下几个步骤: 1. 导入驱动Jar包:sqljdbc.jar 2. 加载并注册驱动程序 3. 设置连接路径 4. 加载并注册驱动 5. 连接数据库 6. ...

随机推荐

  1. C#开发ActiveX控件

    昨天写了篇博客<Winform 程序嵌入WPF程序 并发送消息>,没有说明为什么要嵌入WPF程序,那么今天就来唠叨唠叨其中的一个使用场景,开发ActiveX控件 首先,新建一个类库工程Hu ...

  2. Lazy Scheduler

    Lazy Scheduler:我的轻量级任务调度框架   一.背景 工作中经常涉及任务调度,一直都是采用while(true) => if hitted DO => Thread.Slee ...

  3. Android简单发送邮件(可带附件)

    项目中遇到了一个发送邮件的功能,在网上查了很多,资料也很多.这里就不一一介绍了,只是写出我使用的方案(最简单的) Intent email = new Intent(android.content.I ...

  4. [转]Running JavaScript in an iOS application with JavaScriptCore

    原文:https://www.infinum.co/the-capsized-eight/articles/running-javascript-in-an-ios-application-with- ...

  5. 解决js中传值,Action获取是乱码问题

    1.先在js中进行编码 var str = $("mytext").val(); //转码,两次 str = encodeURI(str); str = encodeURI(str ...

  6. MongoDB服务安装

    0.解压压缩包:D:\lab\mongodb 1.创建目录: D:\lab\mongodb\data D:\lab\mongodb\data\db D:\lab\mongodb\data\log D: ...

  7. jquery简单封装

    对Raphael画图标的一个jquery简单封装 公司要做一个项目的demo,要求地图上可以插红旗,所以就用到了Raphael. 因为是个demo,所以地图就用了一张图片,效果如下: 所以为了更好的封 ...

  8. linux学习心得之vim/Cvim篇

    linux学习心得之vim/Cvim篇 在linux 下,vim 时一种最常见的编辑器,很多linux的发行版就自带了.我的是CentOS 6.3. 基本上Vim共分为3种模式,分别是一般模式,编辑模 ...

  9. Java笔记:抽象类、接口

    这篇笔记主要是抽象类和接口,还有简单介绍下三种设计模式:模板模式.工厂模式.命令模式 1.抽象方法和抽象类(1)抽象方法和抽象类都必须使用abstract修饰符来定义,包含抽象方法的类只能被定义成抽象 ...

  10. Twitter Storm:单机环境的安装与配置

    Twitter Storm:单机环境的安装与配置 好久没写博客了,这一段时间一直被导师push着做毕业设计.由于目前的方向偏向于图像识别检索,毕设打算做一个基于分布式计算平台的图像检索系统,查阅相关资 ...