import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class JDBC_Test {
// 创建静态全局变量
static Connection conn; static Statement st; public static void main(String[] args) {
insert(); //插入添加记录
update(); //更新记录数据
delete(); //删除记录
query(); //查询记录并显示
} /* 插入数据记录,并输出插入的数据记录数*/
public static void insert() { conn = getConnection(); // 首先要获取连接,即连接到数据库 try {
String sql = "INSERT INTO staff(name, age, sex,address, depart, worklen,wage)"
+ " VALUES ('Tom1', 32, 'M', 'china','Personnel','3','3000')"; // 插入数据的sql语句 st = (Statement) conn.createStatement(); // 创建用于执行静态sql语句的Statement对象 int count = st.executeUpdate(sql); // 执行插入操作的sql语句,并返回插入数据的个数 System.out.println("向staff表中插入 " + count + " 条数据"); //输出插入操作的处理结果 conn.close(); //关闭数据库连接 } catch (SQLException e) {
System.out.println("插入数据失败" + e.getMessage());
}
} /* 更新符合要求的记录,并返回更新的记录数目*/
public static void update() {
conn = getConnection(); //同样先要获取连接,即连接到数据库
try {
String sql = "update staff set wage='2200' where name = 'lucy'";// 更新数据的sql语句 st = (Statement) conn.createStatement(); //创建用于执行静态sql语句的Statement对象,st属局部变量 int count = st.executeUpdate(sql);// 执行更新操作的sql语句,返回更新数据的个数 System.out.println("staff表中更新 " + count + " 条数据"); //输出更新操作的处理结果 conn.close(); //关闭数据库连接 } catch (SQLException e) {
System.out.println("更新数据失败");
}
} /* 查询数据库,输出符合要求的记录的情况*/
public static void query() { conn = getConnection(); //同样先要获取连接,即连接到数据库
try {
String sql = "select * from staff"; // 查询数据的sql语句
st = (Statement) conn.createStatement(); //创建用于执行静态sql语句的Statement对象,st属局部变量 ResultSet rs = st.executeQuery(sql); //执行sql查询语句,返回查询数据的结果集
System.out.println("最后的查询结果为:");
while (rs.next()) { // 判断是否还有下一个数据 // 根据字段名获取相应的值
String name = rs.getString("name");
int age = rs.getInt("age");
String sex = rs.getString("sex");
String address = rs.getString("address");
String depart = rs.getString("depart");
String worklen = rs.getString("worklen");
String wage = rs.getString("wage"); //输出查到的记录的各个字段的值
System.out.println(name + " " + age + " " + sex + " " + address
+ " " + depart + " " + worklen + " " + wage); }
conn.close(); //关闭数据库连接 } catch (SQLException e) {
System.out.println("查询数据失败");
}
} /* 删除符合要求的记录,输出情况*/
public static void delete() { conn = getConnection(); //同样先要获取连接,即连接到数据库
try {
String sql = "delete from staff where name = 'lili'";// 删除数据的sql语句
st = (Statement) conn.createStatement(); //创建用于执行静态sql语句的Statement对象,st属局部变量 int count = st.executeUpdate(sql);// 执行sql删除语句,返回删除数据的数量 System.out.println("staff表中删除 " + count + " 条数据\n"); //输出删除操作的处理结果 conn.close(); //关闭数据库连接 } catch (SQLException e) {
System.out.println("删除数据失败");
} } /* 获取数据库连接的函数*/
public static Connection getConnection() {
Connection con = null; //创建用于连接数据库的Connection对象
try {
Class.forName("com.mysql.jdbc.Driver");// 加载Mysql数据驱动 con = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/myuser", "root", "root");// 创建数据连接 } catch (Exception e) {
System.out.println("数据库连接失败" + e.getMessage());
}
return con; //返回所建立的数据库连接
}
}

preparestatement

package com.serein.jdbc;  

import java.sql.*;  

public class preparedStatemetTest {  

    public static void main(String[] args) {  

        //检查命令行中是否够7个参数
if(args.length != 7) {
System.out.println("Parameter Error! Please Input Again!");
System.exit(-1);
} //程序获取运行栈里的7个参数值
String name = args[0];
int age = 0;
try {
age = Integer.parseInt(args[1]);
} catch (NumberFormatException e) {
System.out.println("Parameter Error! Age should be Number Format!");
System.exit(-1);
} String sex = args[2];
String address = args[3];
String depart = args[4]; int worklen = 0;
try {
worklen = Integer.parseInt(args[5]);
} catch (NumberFormatException e) {
System.out.println("Parameter Error! Worklen should be Number Format!");
System.exit(-1);
} int wage = 0;
try {
wage = Integer.parseInt(args[6]);
} catch (NumberFormatException e) {
System.out.println("Parameter Error! Wage should be Number Format!");
System.exit(-1);
} //创建PreparedStatement对象
PreparedStatement pstmt = null;
//创建连接对象
Connection conn = null; //连接数据库,并插入数据
try {
//加载MySQL驱动实例,提供了两种方法,是等价的
Class.forName("com.mysql.jdbc.Driver");
//new oracle.jdbc.driver.OracleDriver(); //建立连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myuser", "root", "root"); //使用PreparedStatement对象里来构建并执行SQL语句,7个问号代表7个字段预先要保留的值
pstmt = conn.prepareStatement("INSERT INTO staff(name, age, sex,address, depart, worklen,wage) VALUES (?, ?, ?, ?, ?, ?, ?)"); //通过PreparedStatement对象里的set方法去设置插入的具体数值
pstmt.setString(1, name);
pstmt.setInt(2, age);
pstmt.setString(3, sex);
pstmt.setString(4,address );
pstmt.setString(5, depart);
pstmt.setInt(6, worklen);
pstmt.setInt(7, wage);
pstmt.executeUpdate(); //插入成功提示
System.out.print("成功插入一条数据记录!"); //捕获驱动加载失败异常
} catch (ClassNotFoundException e) {
e.printStackTrace(); //捕获SQL语句执行失败异常
} catch (SQLException e) {
e.printStackTrace();
//恢复变量初始值
} finally {
try {
if(pstmt != null) {
pstmt.close();
pstmt = null;
}
if(conn != null) {
conn.close();
conn = null;
}
//捕获SQL异常
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

callablestatement

package com.serein.jdbc;  

import java.sql.*;  

import com.sun.org.apache.xalan.internal.xsltc.compiler.util.Type;  

public class procedureTest {  

    // 数据库连接
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver"); // 加载Mysql数据驱动
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/myuser", "root", "root"); // 创建数据连接
} catch (Exception e) {
System.out.println("数据库连接失败");
}
return conn;
} // 列出数据库中所有的存储过程名
public static void GET_AllProName(Connection con) {
try {
DatabaseMetaData md = con.getMetaData(); // 获得数据库的元数据
ResultSet resultSet = md.getProcedures(null, null, "%"); // 获得所有的存储过程的描述
System.out.println("数据库现有的存储过程名为:"); // 显示存储过程名,位于结果集的第三个字段 while (resultSet.next()) {
String procName = resultSet.getString(3);
System.out.print(procName + "\n");
} System.out.println();
} catch (SQLException e) {
e.printStackTrace();
}
}
//*/ // 调用存储过程
public static void CALL_Procedure(Connection con) throws Exception {
CallableStatement cst = null; // CallableStatement是Statement的子类
System.out.println("开始执行存储过程");
try {
// 调用无参数的存储过程
cst = con.prepareCall("{call addStaff(?,?,?,?,?,?,?,?)}"); //8个?号作占位符 //设置输入的参数值
cst.setString(1, "Tina");
cst.setInt(2, 23);
cst.setString(3, "W");
cst.setString(4, "Shanghai");
cst.setString(5, "Personnel");
cst.setInt(6, 1);
cst.setInt(7, 3000);
cst.registerOutParameter(8, Type.INTERNAL); //注册输出参数类型
cst.execute(); //执行 int insertID = cst.getInt(8); //获取输出的参数值
System.out.println("The last staff ID is :" + insertID); //将输入的参数打印出来 } catch (SQLException e) {
e.printStackTrace();
} finally {
cst.close();
}
System.out.println("存储过程执行结束");
} public static void main(String[] args) throws Exception{
Connection conn = null;
try {
conn = getConnection(); // 获得数据库连接
GET_AllProName(conn); // 列出数据库的所有存储过程名
CALL_Procedure(conn); // 调用存储过程
} catch (Exception e1) {
throw e1;
} finally {
conn.close(); // 关闭数据库连接
} } }

jdbc三种常见用法的更多相关文章

  1. Spring源码分析之IOC的三种常见用法及源码实现(二)

    Spring源码分析之IOC的三种常见用法及源码实现(二) 回顾上文 我们研究的是 AnnotationConfigApplicationContext annotationConfigApplica ...

  2. iOS---GCD的三种常见用法

    1.一次性代码:dispatch_once 有时候,有些代码在程序中只要被执行一次. 整个程序运行过程中,只会执行一次. - (void)viewDidLoad { [super viewDidLoa ...

  3. Spring源码分析之IOC的三种常见用法及源码实现(一)

    1.ioc核心功能bean的配置与获取api 有以下四种 (来自精通spring4.x的p175) 常用的是前三种 第一种方式 <?xml version="1.0" enc ...

  4. Spring源码分析之IOC的三种常见用法及源码实现(三)

    上篇文章我们分析了AnnotationConfigApplicationContext的构造器里refresh方法里的invokeBeanFactoryPostProcessors,了解了@Compo ...

  5. 深入学习jQuery的三种常见动画效果

    × 目录 [1]显隐效果 [2]高度变化 [3]淡入淡出 前面的话 动画效果是jQuery吸引人的地方.通过jQuery的动画方法,能够轻松地为网页添加视觉效果,给用户一种全新的体验.jQuery动画 ...

  6. iBatis一些非见用法(相当实用)

     兼顾效率,iBatis一些非见用法(10条) 2009-09-18 10:33:03 标签:iBatis 休闲 职场 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声 ...

  7. Android应用开发中三种常见的图片压缩方法

    Android应用开发中三种常见的图片压缩方法,分别是:质量压缩法.比例压缩法(根据路径获取图片并压缩)和比例压缩法(根据Bitmap图片压缩). 一.质量压缩法 private Bitmap com ...

  8. 三种常见的部署Kubernetes的方式

    三种常见的部署Kubernetes的方式 嘹亮的小号 Ghostcloud-001工号,资深Docker玩家,分布式系统研发11年. ​关注他   容器技术将应用程序及其依赖关系与操作系统进行分离,不 ...

  9. Java中有多少种设计模式?请简单画一下三种常见设计模式的类图?

    转载:http://blog.csdn.net/longyulu/article/details/9159589 一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽 ...

随机推荐

  1. easy ui 表单元素input控件后面加说明(红色)

    <%-- 上传图片到图库基本信息且将图片关联到图集 开始--%> <div id="win_AddPicLib" class="easyui-windo ...

  2. Homework3

    1. 切换路径到想要保存的目录下,使用git init创建仓库: 2. 在仓库下创建文件Readme.txt,使用git add命令添加到暂存区和 git commit 命令提交到仓库: 3.  修改 ...

  3. spring的三种注解管理器

    1.依赖注入的注解解析器 在配置文件中; * xsd xmlns:context="http://www.springframework.org/schema/context" h ...

  4. 链接Eclipse和SQL SEVER

    一.本文内容 讲诉使用JDBC建立Eclipse和Sql sever的桥梁的过程与其中可能遇见的问题. 二.详细内容 1.JDBC驱动的下载 建议一定要上与SQL SEVER相关的微软官网下载,以便找 ...

  5. 拼音操作工具类 - PinyinUtil.java

    拼音操作工具类,提供字符串转换成拼音数组.汉字转换成拼音.取汉字的首字母等方法. 源码如下:(点击下载 -PinyinUtil.java.pinyin4j-2.5.0.jar ) import net ...

  6. 使用SqlDataAdapter时,需要注意的几点

    1.SqlDataAdapter内部通过SqlDataReader获取数据,而默认情况下SqlDataReader不能获知其查询语句对应的数据库表名,所以下面的代码: string strConn,s ...

  7. 深入js的面向对象学习篇(继承篇)——温故知新(三)

    写这篇有关继承的文章时,突然想起,几天前的面试.因为习惯在学习知识的时候加上自己的理解,很喜欢用自己话来解释,于是乎当面试被问起继承原理时,噼里啪啦一大堆都是自己组织的话,(也可能是因为个人紧张.外加 ...

  8. PAT-乙级-1003. 我要通过!(20)

    1003. 我要通过!(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue “答案正确”是自动判题系统给出的最 ...

  9. (转)struts2.0配置文件、常量配置详解

    一.配置: 在struts2中配置常量的方式有三种: 在struts.xml文件中配置 在web.xml文件中配置 在sturts.propreties文件中配置 1.之所以使用struts.prop ...

  10. Slider 滑动条效果

    转载自:http://www.cnblogs.com/cloudgamer/archive/2008/12/24/Slider.html 这个滑动条(拖动条)效果,一开始是参考了BlueDestiny ...