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. WCF 自承载

    WCF 自承载 提供源码 一.WCF 简单介绍 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,是一套通讯接口.现在比较流行的S ...

  2. vs2015开发Windows服务

    工作已经很久,时隔这么长时间写这篇文章是给自己以后做参考.也不至于以后长时间不写Windows服务而忘记整个开发过程.windows服务开发,基础的就不说了,直接上过程. 1.新建windows服务项 ...

  3. Erasure Coding in WAS简单译文

    原文:<Erasure Coding in Windows Azure Storage.pdf>,地址:https://www.usenix.org/system/files/confer ...

  4. java读取properties 文件信息

      src下config/tank.properties文件 initTankCount=10 ReinitTankCount=8 Etmspeed=15 Mtmspeed=15 MTankCount ...

  5. 简单使用JSON,通过JSON 字符串来创建对象(二)

    把 JSON 文本转换为 JavaScript 对象 JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 Jav ...

  6. .net SoapHeader验证

    .net SoapHeader验证 在工作中经常用到webservice,在.net 开发中经常用到webservice,在java开发经常用到cxf. 今天闲置没事就介绍下 .net webserv ...

  7. webservice 第一节 .net SoapHeader验证

    在工作中经常用到webservice,在.net 开发中经常用到webservice,在java开发经常用到cxf. 今天闲置没事就介绍下 .net webservice中常用到 soapheader ...

  8. Using django model/authentication/authorization within Tornado

    There is a project which is deployed within django. So its authentication system is built from Djang ...

  9. SVN插件

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.D ...

  10. VB.NET调用SQL Sever存储过程

    概要: 本文介绍VB.NET使用创建并调用带有输入参数和输出参数的SQL Sever存储过程 本文代码首先检查要创建的存储过程再数据库中是否存在在.如果不存在,则代码创建一个存储过程,该过程一个参数来 ...