Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序。然而各个开发商的接口并不完全相同,所以开发环境的变化会带来一定的配置变化。本文介绍的是连接SQLServer数据库:

1.打开SQLServer的配置管理器:

2.打开TCP/IP的属性,IPALL的端口改为1433

3.打开服务,重新启动SQL Server(SQLEXPRESS)

4.下面开始写简易的JDBC:

String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=bookDB";
String USERNAME = "sa";
String PASSWORD = "1234";
 package com.ccec.jdbc;

 import java.beans.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; public class jdbc {
private static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
private static final String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=bookDB";
private static final String USERNAME = "sa";
private static final String PASSWORD = "1234"; public boolean login(String username, String password) {
Connection con = null;
PreparedStatement st = null;
ResultSet rs = null; try {
Class.forName(DRIVER);
con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
String sql = "select userName,pwd from userInfo where userName=? and pwd=?";
st = con.prepareStatement(sql);
st.setString(1, username);
st.setString(2, password);
rs = st.executeQuery(); if (rs.next()) {
System.out.println(username);
return true;
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (st != null) {
st.close();
}
if (con != null) {
con.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return false;
}
}

5.封装后的JDBC

 package com.ccec.jdbc;

 /**
* @author StayReal
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException; public class jdbc {
// SQLServer驱动类的全名(包名.;类名)
private static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
// 连接的URL
private static final String URL = "jdbc:sqlserver://localhost:1433;DatabaseName=bookDB";
// 登陆SQLServer的用户名
private static final String USERNAME = "sa";
// 登陆SQLServer的密码
private static final String PASSWORD = "1234";
// 数据库的对象声明
private Connection con = null;
private PreparedStatement pst = null;
private ResultSet rs = null; /**
* 加载驱动,建立连接
*
* @throws ClassNotFoundException
* @throws SQLException
*/
private void getConnection() throws ClassNotFoundException, SQLException {
Class.forName(DRIVER);
con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
} /**
* 执行查询
*
* @param sql
* 执行的SQL语句
* @param params
* Object数组 封装所有的SQL语句参数 顺序与SQL语句是参数顺序一致
* @return ResultSet 返回执行的结果
*/
public ResultSet execQuery(String sql, Object[] params) {
try {
getConnection();
pst = con.prepareStatement(sql);
setPrepareStatementParams(params);
rs = pst.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return rs;
} /**
* 执行增加、删除、修改SQL操作的方法
*
* @param sql
* 执行的参数化SQL语句
* @param params
* Object数组 封装所有的SQL语句参数 顺序与SQL语句是参数顺序一致
* @return int型 受影响的行数 -1表示出现异常
*/
public int execUpadte(String sql, Object[] params) {
try {
getConnection();
pst = con.prepareStatement(sql);
setPrepareStatementParams(params);
int affectedRows = pst.executeUpdate();
return affectedRows;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeAll();
}
return -1;
} /**
* 为PrepareStatement设置参数
*
* @param params
* 参数数组
* @throws SQLException
*/
private void setPrepareStatementParams(Object[] params) throws SQLException {
if (params != null) {
// 传一个数组的参数
for (int i = 0; i < params.length; i++) {
pst.setObject(i + 1, params[i]);
}
}
} /**
* 关闭Connection ,PrepareStatement,ResultSet
*/
private void closeAll() {
try {
if (rs != null) {
rs.close();
}
if (pst != null) {
pst.close();
}
if (con != null) {
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}

Jdbc初体验的更多相关文章

  1. 19JDBC初体验

    一.JDBC常用类和接口 JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API.JDBC是Java访问数据库的标准规范,可以为 ...

  2. Spring JDBCTemplate连接SQL Server之初体验

    前言 在没有任何框架的帮助下我们操作数据库都是用jdbc,耗时耗力,那么有了Spring,我们则不用重复造轮子了,先来试试Spring JDBC增删改查,其中关键就是构造JdbcTemplate类. ...

  3. Spring之初体验

                                     Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...

  4. hibernate--CRUD初体验

    hibernate的crud操作初体验. 看具体实例 package com.fuwh.model; import javax.persistence.Column; import javax.per ...

  5. 【Spark深入学习 -15】Spark Streaming前奏-Kafka初体验

    ----本节内容------- 1.Kafka基础概念 1.1 出世背景 1.2 基本原理 1.2.1.前置知识 1.2.2.架构和原理 1.2.3.基本概念 1.2.4.kafka特点 2.Kafk ...

  6. SpringBoot初体验及原理解析

    一.前言 ​ 上篇文章,我们聊到了SpringBoot得以实现的幕后推手,这次我们来用SpringBoot开始HelloWorld之旅.SpringBoot是Spring框架对“约定大于配置(Conv ...

  7. 一 Hive安装及初体验

    一 .Hive安装及初体验 1 .hive简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能. 1.1直接使用hadoop面临的问题 ...

  8. SSH初体验系列--Hibernate--2--crud操作

    Ok,今天比较详细的学习一下hibernate的C(create).R(read).U(update).D(delete) 相关api... 前言 Session: 是Hibernate持久化操作的基 ...

  9. Node.js 网页瘸腿爬虫初体验

    延续上一篇,想把自己博客的文档标题利用Node.js的request全提取出来,于是有了下面的初哥爬虫,水平有限,这只爬虫目前还有点瘸腿,请看官你指正了. // 内置http模块,提供了http服务器 ...

随机推荐

  1. ChartConlrol二维图表类型

    WinForms Controls >Controls > Chart Control > Concepts > Creating Charts > 2D Chart T ...

  2. 向PHP语言进发

    在做了几个月的.NET技术之后,我决定转去做PHP开发!人家都说,一言通,多言通!努力吧!

  3. (原)css 响应式媒体查询 模板

    @media only screen and (max-width:340px) { html,input{ font-size:80%; } } @media only screen and (ma ...

  4. android系统将普通应用升级为系统应用

    作为一名程序员,有的时候并不是使用软件,而是去改造软件,不仅仅只是会编程而已,还要满足客户的需求.这样,才能开发出符合客户需求的应用,在关于到涉及到android底层的应用的时候,手机就需要root了 ...

  5. 9会飞的li标签

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  6. iOS开发那些事儿(五)Objective-C浅拷贝与深拷贝

    浅拷贝:copy操作出来的对象指针直接指向模板的地址.即两个对象公用一块内存地址 #import <Foundation/Foundation.h> int main(int argc, ...

  7. 关于OpenXml SpreadSheet列宽根据内容的Auto-suitability

          因为之前接到的一个需求,让excel的宽度自动适应.所以最近一直在看Excel相关内容,从结构到.net的两个类库OpenXml和Office.Interop.Excel,再到一些具体的使 ...

  8. HDU 1033 - Edge

    题目很水 然翻译感人 顺时针或者逆时针走,输出坐标 #include <iostream> using namespace std; ]; int p; ]={,,,-,}; ]={,,- ...

  9. 16-GDBT(MART) 迭代决策树入门教程 | 简介

    转载:http://blog.csdn.net/w28971023/article/details/8240756 GBDT(Gradient Boosting Decision Tree) 又叫 M ...

  10. getopt vs getopts

    getopt示例 #!/bin/bash aflag=no args=`getopt a: $@` ]; then echo 'Usage: ...' exit fi set -- $args ] d ...