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. 实现栈最小元素的min函数

    #include<iostream> #include<stack> using namespace std; class min_stack { public: void p ...

  2. MVC与EasyUI结合增删改查

    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(9)-MVC与EasyUI结合增删改查   在第八讲中,我们已经做到了怎么样分页.这一讲主要讲增删改查.第六讲的 ...

  3. [原]逆向iOS SDK -- +[UIImage imageNamed:] 的实现

    汇编代码: ; Dump of assembler code for function +[UIImage imageNamed:] ; R0 = UIImage, R1 = "imageN ...

  4. 随便讲讲XSS攻击

    作为一个前端工程师,XSS漏洞不应该只是安全部门的工作.在项目上马的时候就应该对可能涉及的安全问题有所预防才是有一个好前端.- -   什么是XSS •跨站脚本攻击(Cross-site script ...

  5. web-worker计数器,根据输入时间统计次数

    1.用web-worker实现:另起一个线程,将计数工作运行在后台的JavaScript文件,并返回累加后的结果. 该js文件运行于后台,独立于其他脚本,不会影响页面的性能.html页面可以继续做任何 ...

  6. 使用 Aspose.Cells 实现 excel导入

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  7. IE6的那些css常见bug(汇总)

    IE6的那些css常见bug(汇总) 我的微博终于在前几天建立了 虽说很早之前就知道博客园这个地方 但怕自己不能坚持去写一些东西一直没有建.这几天 我做了这个决定 把我的博客建起来 每周发一些看到的, ...

  8. Spring Data Rest 支持Put请求

    最近在用 Spring Data Rest 写WebApi 遇到Put请求后报415 Mieda Type 的错误,GG了下 找到个解决办法,下面是针对Put请求的过滤. 1 public class ...

  9. python cookbook学习笔记 第一章 文本(2)

    1.6合并字符串 ka=list('kaluoc') #字符串转成字符串列表 print ''.join(ka) #大量的字符串相连,join是最高效的 print '%s%s something % ...

  10. 自己做个 Tag标签

    这是效果图,下面是源码,时间有限,有时间再完善 http://files.cnblogs.com/wxwall/tag.zip