JDBC连接MySQL数据库
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数据库的更多相关文章
- JDBC连接MySQL数据库代码模板
下面这个例子是最简单的JDBC连接MySQL数据库的例子. 一般步骤: 1.注册驱动: 2.建立连接: 3.创建语句: 4.处理结果: 5.释放资源. 注意: 1.软件开发环境:MyEclipse 8 ...
- java jdbc 连接mysql数据库 实现增删改查
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- Crystal Reports 2008(水晶报表) JDBC连接mysql数据库
在本blog中,主要介绍的是Crystal Reports 2008使用JDBC连接mysql数据库. 在连接之间,首先要确认你电脑上面都安装了mysql数据库. 其次,就是jdbc连接数据时候所使用 ...
- JDBC连接MySQL数据库及演示样例
JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...
- JDBC连接MySQL数据库及示例
JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术. 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一 ...
- java用JDBC连接MySQL数据库的详细知识点
想实现java用JDBC连接MySQL数据库.需要有几个准备工作: 1.下载Connector/J的库文件,下载Connector/J的官网地址:http://www.mysql.com/downlo ...
- JDBC 连接mysql数据库
JDBC 连接mysql数据库jar包:mysql-connector-java-5.1.47.jar 下载:mysql-connector-java-5.1.47.jar jdbc:java dat ...
- 分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)
分页查询信息 使用jdbc连接mysql数据库实现分页查询任务 通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上. 本项目 ...
- JAVA-数据库之JDBC连接MySQL数据库
相关资料:<21天学通Java Web开发> JDBC连接MySQL数据库1.如果需要通过JDBC来连接MySQL数据库,还必须先在MySQL数据库服务器中创建数据库和表. Connect ...
- JDBC 连接Oracle 数据库,JDBC 连接Mysql 数据库
首先是JDBC 连接Oracle 数据库 package com.util; import com.pojo.UserInfo; import java.sql.*; public class DB ...
随机推荐
- USB驱动能力有限
笔者用USB接一个单片机最小系统,再从单片机最小系统引出电源线接一个数字电路模块.当后边两部分的功率较大时,就会引起USB电压的下降,甚至到3V左右.电压的下降就会使单片机或者数字电路部分芯片不能正常 ...
- 工作流软件如何成为未来web的支柱
此文作者是 Kevin Lindquist,工作流平台Decisions的营销负责人,原文发表于VB上. Web 3.0 正在敲门,但是开门的人你永远都想不到:工作流软件. 传统上工作流软件是企业级的 ...
- 将页面中指定表格的数据导入到Excel中
function AutoExcel(){ var oXL = new ActiveXObject("Excel.Application"); //创建应该对象 var o ...
- Entity Framework: 视图查询时重复返回第一行值, duplicate frst rows in resultset from a view
http://blog.csdn.net/riverlau/article/details/7476449 1. 使用rownumber给view加上一个标示列 SELECT ROW_NUMBER() ...
- LightOj_1317 Throwing Balls into the Baskets
题目链接 题意: 有N个人, M个篮框, 每个人投进球的概率是P. 问每个人投K次后, 进球数的期望. 思路: 每个人都是相互独立的, 求出一个人进球数的期望即可. 进球数和篮框的选择貌似没有什么关系 ...
- Object.defineProperty
属性类型ECMA-262第5版在定义只有内部才用的特性(attribute)时,描述了属性(property)的各种特征.ECMA-262定义这些特性是为了实现JavaScript引擎用的,因此在Ja ...
- 李洪强漫谈iOS开发[C语言-026]-符合赋值表达式
- ajax 初始化请求前携带参数
$(function () { function SetAjax(wxOpenId, departCode) { $.ajaxSetup({ xhrF ...
- wcf中netTcpBinding的元素构成
<security> of <netTcpBinding> <transport> of <netTcpBinding> <message> ...
- 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 ...