driver为JDBC的驱动。

url为数据库的地址。

usrname和password分别为数据库的用户名和密码。

Connection类用来连接MySQL。

PreparedStatement类用来预编译sql语句,并可以执行。有的地方也用Statement。因为PreparedStatement继承了Statement,并且在执行多次查询更新的时候比Statement更快。PreparedStatement的第一次执行消耗是很高的,它的性能体现在重复执行。比如当我使用PreparedStatement来进行查询的时候,JDBC会发送一个网络请求来编译这个查询语句,在执行时会产生另外一个网络请求来执行。但是当我执行多次相同的查询的时候,使用PreparedStatement只会产生一个网络请求来执行语句。但如果使用Statement还会产生一个网络请求来编译语句。

ResultSet用来存储结果,一般用到select语句时用。

import java.sql.*;

class MySQL {
private static final String driver = "com.mysql.jdbc.Driver";
private static final String url = "jdbc:mysql://localhost:3306/school";
private static final String usrname = "root";
private static final String password = "";
private Connection con = null;
private PreparedStatement ps = null;
private ResultSet rs = null; //创建student表
public MySQL() {
//如果不存在Student表则创建
String sql = "create table if not exists Student(name char(10), "
+ "sno char(10) primary key, age smallint, sex char(6), "
+ "sdept char(4))";
//加载驱动
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} try {
con = DriverManager.getConnection(url, usrname, password);//连接数据库
ps = con.prepareStatement(sql);//预编译sql语句
ps.executeUpdate();//执行sql语句更新 //必须按顺序关闭并且必须关闭
try {
if (ps != null)
ps.close();
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
} } catch (SQLException e) {
e.printStackTrace();
}
} //插入多条信息
public void addInfo(String[] name, String[] sno, int[] age, String[] sex,
String[] sdept) {
String sql = "insert into student(name, sno, age, sex, sdept) "
+ "values(?, ?, ?, ?, ?);";
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} try {
con = DriverManager.getConnection(url, usrname, password);
ps = con.prepareStatement(sql);//只需要预编译一次
for (int i = 0; i < name.length; i++) {
ps.setString(1, name[i]);
ps.setString(2, sno[i]);
ps.setInt(3, age[i]);
ps.setString(4, sex[i]);
ps.setString(5, sdept[i]);
ps.executeUpdate();
} try {
if (ps != null)
ps.close();
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
}
} //删除多条信息
public void deleteInfo(String[] name) {
String sql = "delete from student where name = ? ;";
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} try {
con = DriverManager.getConnection(url, usrname, password);
ps = con.prepareStatement(sql);
for (int i = 0; i < name.length; i++) {
ps.setString(1, name[i]);
ps.executeUpdate();
} try {
if (ps != null)
ps.close();
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
} } catch (SQLException e) {
e.printStackTrace();
}
} //查询多条信息
public void searchInfo(String[] name) {
String sql = "select * from student where name like ? ;";
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} try {
con = DriverManager.getConnection(url, usrname, password);
ps = con.prepareStatement(sql);
for (int i = 0; i < name.length; i++) {
ps.setString(1, name[i]);
rs = ps.executeQuery();//返回的查询结果存在结果集里面 if (rs.next()) {
do {
System.out.println("Name: " + rs.getString(1) + ", Sno: "
+ rs.getString(2) + ", age:" + rs.getString(3)
+ ", sex: " + rs.getString(4) + ", sdept: "
+ rs.getString(5));
} while (rs.next());
}
else {
System.out.println("There is no one named " + name[i] + ".");
}
} try {
if (rs != null)
rs.close();
if (ps != null)
ps.close();
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
} public class TestJDBC {
static String[] name = {"Mike", "Tom", "Jack", "Amy", "Allen"};
static String[] sno = {"2013210001", "2013210002", "2013210003", "2013210004", "2013210005", };
static int[] age = {21, 22, 25, 20, 24};
static String[] sex = {"female", "female", "female", "male", "male"};
static String[] sdept = {"CS", "EE", "SE", "CS", "SE"}; public static void main(String[] args) {
//创建Student表
System.out.println("Creating table student!");
MySQL sq = new MySQL(); //添加学生信息
System.out.println("\nTesting add data!");
sq.addInfo(name, sno, age, sex, sdept); //删除Tom和Allen的信息
System.out.println("\nTesting delete data!");
String[] del = {"Tom", "Allen"};
sq.deleteInfo(del); //查询Tom,Amy和Mike的信息。
System.out.println("\nTesting search data!");
String[] sear = {"Tom", "Amy", "Mike"};
sq.searchInfo(sear); System.out.println("\nSuccess!");
}
}

上述代码运行结果如下

Creating table student!

Testing add data!

Testing delete data!

Testing search data!
There is no one named Tom.//因为上一部已经将Tom删除
Name: Amy, Sno: 2013210004, age:20, sex: male, sdept: CS
Name: Mike, Sno: 2013210001, age:21, sex: female, sdept: CS Success!

利用JDBC连接MySQL并使用MySQL的更多相关文章

  1. 2、Java应用中常见的JDBC连接字符串(SQLite、MySQL、Oracle、Sybase、SQLServer、DB2)

    2.Java应用中常见的JDBC连接字符串 Java应用中连接数据库是不可或缺的,于是便整理一些可能用到的JDBC的jar包及其相匹配的URL,以备日后查阅. 1)SQLite Class.forNa ...

  2. 利用jdbc连接oracle数据库

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

  3. 利用JDBC连接Eclipse和mySQL5.1.26数据库

    初学JDBC,看了看书,自己动手的时候还是有很多地方有问题,最终终于解决了实现了数据库的连接.现将整个步骤描述如下: 环境:mySQL5.1.26(win 32bit), Eclipse JavaEE ...

  4. 利用jdbc连接池(利用jdni)

    简介 前段时间用jdbc连接池,在这里记录下 1.利用jdni配置数据源 在Web项目的META-INF文件夹中新建context.xml文件,内容为: <?xml version=" ...

  5. 利用JDBC连接Oracle数据库(转)

    http://blog.csdn.net/wahaha1_/article/details/8512438 JDBC是Sun公司制定的一个可以用Java语言连接数据库的技术. 一.JDBC基础知识 J ...

  6. Android学习笔记————利用JDBC连接服务器数据库

    /******************************************************************************************** * auth ...

  7. 怎样利用JDBC连接并操作Oracle数据库

    之前学习.NET的时候.以前利用ODBC进行连接数据库,而在Java中通常採用JDBC连接数据库,这里以oracle数据库为例简单的总结一下利用JDBC怎样连接并操作数据库. 1.连接 public ...

  8. jdbc的配置及jdbc连接常用数据库(mysql、sqlserver、Oracle)

    1.连接SQL Server数据库 import java.sql.*; publicclassMain{publicstaticvoid main(String[] args){String dri ...

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

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

随机推荐

  1. ubuntu用apt安装apache2时,出现E:未发现软件包 apache2

    解决方法:使用sudo apt-get update更新软件包 更新软件包失败,多半使用因为源文件不干净,在/etc/apt下重新自己新写一份源文件 然后执行 sudo apt-get update

  2. 新年PR交期回写,展望期由14天改为30天,FP_PR2SAP ;转单量改为100W;FP_PR2SAP_MOD_NEW

  3. 【微信开发】常用 api

    [微信开发]api 一. 开发文档 二. 调试工具 三. api 1. 获取 token - https://api.weixin.qq.com/cgi-bin/token?grant_type=cl ...

  4. java工程笔记

    start.sh #TITLE=jetty DEPLOY_PATH=$(cd $()/../ && pwd) export DEPLOY_PATH CLASSPATH=${CLASSP ...

  5. 如何将红色区域数据调用解密函数直接打印到输出控制台(例如:crt控制台)

    int main(int argc, char *argv[]) { unsigned char data[PACKET_MAX_LEN]; int data_len = 0; int socket_ ...

  6. 定义/修改列时 NULL

    mysql的文档说明: column_definition:     col_name type [NOT NULL | NULL] [DEFAULT default_value]         [ ...

  7. java解析中国行政区域并在页面显示实现动态逐级筛选

    一.实现目标 首先会有一个存放中国行政区域数据的一个txt文件,用java读取并解析出来,并在页面上通过下拉框的形式展示出来.实现效果如下图,当选择完省份后,在选择该省份下的城市,然后在选择该城市下的 ...

  8. Java基础知识系列——Exception

    异常在编程中使用频率非常非常的高,在Java中异常的基类是Exception. 下面就介绍一下Java中的异常: 1.结构 try{ //捕获try里的异常 }catch( Exception e){ ...

  9. SQL SERVER With语法[转]

    今天在论坛上看到一个举例,关于sql server 的示例.1/25/50/100美分,多少种可能拼凑成2美元. 看了其中第一条语法,放在SQL SERVER中测试,发现真的列举出所有组合成2美元的方 ...

  10. SpringMVC集成缓存框架Ehcache

    在互联网应用中,应用并发比传统企业及应用会高出很多.解决并发的根本在于系统的响应时间与单位时间的吞吐量.思路可分为:一减少系统的不必要开支(如缓存),二是提高系统单位时间内的运算效率(如集群). 在硬 ...