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; //返回所建立的数据库连接
}
}
PreparedStatement和Statement区别  

Statement不足:
1.------- 效率比较低
2.------- 对字段类型的支持比较差
3.------- 语法含义不清晰(结构不清楚)。
由于编译不需要参数,PreparedStatement可以使用“?”来替代sql语句中的某些参数,它先将不带参数的sql语句发送到数据库,进行预编译,然后PreparedStatement会再将设置好的参数发送给数据库,这样就提高了多次频繁操作一个SQL的效率了。
在使用PreparedStatement设置相应参数时,要指明参数的位置和类型,以及给出参数的具体值,根据不同的参数类型使用不同的setXXX(参数的位置,参数值)来设置参数。
如:
String sql=”update student set name=? where id=4;”
//其中的?代表占位符,在这里并没有设置具体值。
PreparedStatement pstmt=con.prepareStatement(sql);
// sql语句已经发送到数据库去编译了,即预编译。
pstmt.setXXX(parameter_position,parameter_value)
//把参数值存放在PreparedStatement对象中。
pstmt.executeUpdate();
// 由于已经预编译过,因此不需要再传入sql语句,就可以直接执行。
经常看我Blog的朋友们都知道我一般喜欢就Code来说明一切,那说服力强啊,哈哈,简短易懂!开始:::
Statement Code:
//注:当执行多插入和多修改时可以使用批量处理addBatch,executeBatch;
public class JDBCStatementTest {
public static void main(String args[]){
Connection con = null;
Statement stm = null;
ResultSet rs = null;
try {
//1.加载JDBC驱动和连接数据库
con=JDBCConAndClo.getConnectionBao();
System.out.println("con="+con);
// //*用Statement向数据库插入数据:
// String sql1="insert into student values(12,'wang','java',55)";
// String sql2="insert into student values(13,'wang','java',95)";
// String sql3="insert into student values(14,'wadedng','java',45)";
// stm = con.createStatement();
// stm.executeUpdate(sql1);
// stm.executeUpdate(sql2);
// stm.executeUpdate(sql3);
// System.out.println("插入成功!");
//*用Statement从数据库中删除数据:
String sql11="delete from student where id=1";
String sql12="delete from student where id=2";
String sql13="delete from student where id=3";
stm = con.createStatement();
stm.executeUpdate(sql11);
stm.executeUpdate(sql12);
stm.executeUpdate(sql13);
System.out.println("删除成功!");
//*用Statement从数据库查询数据:
//2. 执行sql语句:
String sql = "select * from student";
// 创建一个statement(发送sql)
stm = con.createStatement();
// 执行查询sql语句
rs = stm.executeQuery(sql);
// 3.获取sql结果集:
while(rs.next()){
System.out.print(rs.getString("id")+" ");
System.out.print(rs.getString("name")+" ");
System.out.print(rs.getString("course")+" ");
System.out.println(rs.getString("score"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
//4.关闭数据库,并释放资源:
JDBCConAndClo.closeResultSet(rs);
JDBCConAndClo.closeStatement(stm);
JDBCConAndClo.closeConnection(con);
}
}
}
PreparedStatement代码如下: //注:当执行多插入和多修改时可以使用批量处理addBatch,executeBatch;
public class JDBCPreparedStatementTest {
public static void main(String args[]){
Connection con=null;
PreparedStatement pstm=null;
ResultSet rs=null;
try {
con=JDBCConAndClo.getConnectionBao();
//*用PreparedStatement向数据库中插入数据;
//String sql="insert into student values(10,'李四','高数',90)";
String sql="insert into student values(?,?,?,?)";
//1.先创建PreparedStatement语句(发送slq请求):
pstm=con.prepareStatement(sql);
//2.在设置sql语句:
pstm.setInt(1,11);
pstm.setString(2,"wangqinqin");
pstm.setString(3, "hibernate");
pstm.setInt(4, 85);
//3.再执行sql语句:
pstm.executeUpdate();
System.out.println("插入成功!"); //*用PreparedStatement从数据库中删除数据;
String sql2="delete from student where id=?";
pstm=con.prepareStatement(sql2);
pstm.setInt(1,5);
pstm.executeUpdate();
System.out.println("删除成功!"); //*用PreparedStatement从数据库中查询出数据;
String sql1="select * from student where id=?";
pstm=con.prepareStatement(sql1);
pstm.setInt(1,8);
rs=pstm.executeQuery();
System.out.println("查询结果为:");
//循环取得结果;
while(rs.next()){
System.out.print(rs.getString("id")+" ");
System.out.print(rs.getString("name")+" ");
System.out.print(rs.getString("course")+" ");
System.out.println(rs.getString("score"));
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
JDBCConAndClo.closeResultSet(rs);
JDBCConAndClo.closePreparedStatement(pstm);
JDBCConAndClo.closeConnection(con);
} }
}
其中连接和关闭数据库已经封装到另一个包JDBCConAndClo类中: public class JDBCConAndClo {
public static void main(String args[]) {
JDBCConAndClo jc = new JDBCConAndClo();
jc.getConnectionBao();
}
//加载JDBC驱动程序和连接数据库;
public static Connection getConnectionBao() {
Connection con = null;
String URL = "jdbc:oracle:thin:@localhost:1521:ambow";
String user = "system";
String password = "wqq123";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection(URL, user, password);
if (!con.isClosed()) {
System.out.println("连接数据库成功!");
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println("con=" + con);
return con;
}
//关闭ResultSet
public static void closeResultSet(ResultSet rs) {
if (rs != null) {
try {
rs.close();
rs = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//关闭Statement
public static void closeStatement(Statement stm) {
if (stm != null) {
try {
stm.close();
stm = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//关闭PreparedStatement
public static void closePreparedStatement(PreparedStatement pstm) {
if (pstm != null) {
try {
pstm.close();
pstm = null;
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//关闭Connection
public static void closeConnection(Connection con) {
if (con != null) {
try {
con.close();
con = null;
} catch (SQLException e) {
e.printStackTrace();
}
con = null;
}
}
}

JDBC连接MySQL数据库的更多相关文章

  1. JDBC连接MySQL数据库代码模板

    下面这个例子是最简单的JDBC连接MySQL数据库的例子. 一般步骤: 1.注册驱动: 2.建立连接: 3.创建语句: 4.处理结果: 5.释放资源. 注意: 1.软件开发环境:MyEclipse 8 ...

  2. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  3. Crystal Reports 2008(水晶报表) JDBC连接mysql数据库

    在本blog中,主要介绍的是Crystal Reports 2008使用JDBC连接mysql数据库. 在连接之间,首先要确认你电脑上面都安装了mysql数据库. 其次,就是jdbc连接数据时候所使用 ...

  4. JDBC连接MySQL数据库及演示样例

    JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

  5. JDBC连接MySQL数据库及示例

      JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一 ...

  6. java用JDBC连接MySQL数据库的详细知识点

    想实现java用JDBC连接MySQL数据库.需要有几个准备工作: 1.下载Connector/J的库文件,下载Connector/J的官网地址:http://www.mysql.com/downlo ...

  7. JDBC 连接mysql数据库

    JDBC 连接mysql数据库jar包:mysql-connector-java-5.1.47.jar 下载:mysql-connector-java-5.1.47.jar jdbc:java dat ...

  8. 分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)

             分页查询信息       使用jdbc连接mysql数据库实现分页查询任务 通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上. 本项目 ...

  9. JAVA-数据库之JDBC连接MySQL数据库

    相关资料:<21天学通Java Web开发> JDBC连接MySQL数据库1.如果需要通过JDBC来连接MySQL数据库,还必须先在MySQL数据库服务器中创建数据库和表. Connect ...

  10. JDBC 连接Oracle 数据库,JDBC 连接Mysql 数据库

    首先是JDBC 连接Oracle  数据库 package com.util; import com.pojo.UserInfo; import java.sql.*; public class DB ...

随机推荐

  1. USB驱动能力有限

    笔者用USB接一个单片机最小系统,再从单片机最小系统引出电源线接一个数字电路模块.当后边两部分的功率较大时,就会引起USB电压的下降,甚至到3V左右.电压的下降就会使单片机或者数字电路部分芯片不能正常 ...

  2. 工作流软件如何成为未来web的支柱

    此文作者是 Kevin Lindquist,工作流平台Decisions的营销负责人,原文发表于VB上. Web 3.0 正在敲门,但是开门的人你永远都想不到:工作流软件. 传统上工作流软件是企业级的 ...

  3. 将页面中指定表格的数据导入到Excel中

    function AutoExcel(){   var oXL = new ActiveXObject("Excel.Application"); //创建应该对象   var o ...

  4. Entity Framework: 视图查询时重复返回第一行值, duplicate frst rows in resultset from a view

    http://blog.csdn.net/riverlau/article/details/7476449 1. 使用rownumber给view加上一个标示列 SELECT ROW_NUMBER() ...

  5. LightOj_1317 Throwing Balls into the Baskets

    题目链接 题意: 有N个人, M个篮框, 每个人投进球的概率是P. 问每个人投K次后, 进球数的期望. 思路: 每个人都是相互独立的, 求出一个人进球数的期望即可. 进球数和篮框的选择貌似没有什么关系 ...

  6. Object.defineProperty

    属性类型ECMA-262第5版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征.ECMA-262定义这些特性是为了实现JavaScript引擎用的,因此在Ja ...

  7. 李洪强漫谈iOS开发[C语言-026]-符合赋值表达式

  8. ajax 初始化请求前携带参数

     $(function () {     function SetAjax(wxOpenId, departCode) {         $.ajaxSetup({             xhrF ...

  9. wcf中netTcpBinding的元素构成

    <security> of <netTcpBinding> <transport> of <netTcpBinding> <message> ...

  10. POJ_1182_食物链_[NOI]_(并查集)

    描述  http://poj.org/problem?id=1182 共A,B,C三种动物,A吃B,B吃C,C吃A.给出询问 q : t , x , y , 表示: x 与 y 是同类 ( t==1 ...