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. iOS基础 - UITableView的数据源(dataSource)和代理(delegate)

    UITableView的数据源(dataSource)和代理(delegate) UITableView需要一个数据源(dataSource)来显示数据,UITableView会向数据源查询一共有多少 ...

  2. Oracle 补丁及opatch 工具介绍

    一. CPU(Critical Patch Update) 一个CPU内包含了对多个安全漏洞的修复,并且也包括相应必需的非安全漏洞的补丁.CPU是累积型的,只要安装最新发布的CPU即可,其中包括之前发 ...

  3. tomcat安装和基本配置

    首先,默认电脑上已经配置好java环境. 在http://tomcat.apache.org/这里下载tomcat二进制版本,下载到本地后随意解压在某个盘, 我解压在D:\apache-tomcat- ...

  4. MongoDB服务安装

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

  5. XNA 4.0 环境搭建和 Hello World,Windows Phone 游戏开发

    XNA 4.0 环境搭建和 Hello World,Windows Phone 游戏开发 使用 Scene 类在 XNA 中创建不同的场景(八) 摘要: 平方已经开发了一些 Windows Phone ...

  6. C#中WindowsForm常见控件的运用

    C#中WindowsForm常见控件的运用 -- 1.button(曹操,贡天子以令不臣): 属性;text:我们经常可以看见将按钮命名为“登入”,在其属性面板里面编辑text即可:如下图:      ...

  7. building android/ubuntu-touch on 32bit machine

    host C: libhost <= build/libs/host/CopyFile.c host StaticLib: libhost (/media/linux/1/touch/expor ...

  8. 基于数据库的自动化生成工具,自动生成JavaBean、自动生成数据库文档等(v4.1.2版)

            目录:            第1版:http://blog.csdn.net/vipbooks/article/details/51912143            第2版:htt ...

  9. java 异常处理机制及说明。

    又抄袭了一篇文章,其实就是想保存到自己的博客中而已,文章出处:http://www.cnblogs.com/LilianChen/p/4639471.html 1. 如何捕获异常 try { 可能会出 ...

  10. OC之类与对象

    1.面向过程与面向对象. 1). 完成需求1 将大象放进冰箱. a. 把冰箱门打开. b. 把大象放进去. c. 把冰箱门关上. 这是面向过程的思路. 找1个冰箱,要求这个冰箱可以自己开门,自己把大象 ...