java与mysql的简单连接与编译
来源:互联网 发布:saber软件正版价格 编辑:程序博客网 时间:2024/05/17 20:33
先下载Mysql的驱动类库
http://dev.mysql.com/downloads/connector/j/
解压 主要用到mysql-connector-java-5.1.40.jar
下面给mysql-connector-java-5.1.40.jar起一个简短的名字mysqldriver.jar
一个简短的代码:
import java.sql.*;
public class DBTester {
public static void main(String[] args) throws Exception {
Connection con;
Statement stmt;
ResultSet rs;
// 加载驱动器
Class.forName("com.mysql.jdbc.Driver");
// 注册mysql驱动器
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
// 连接数据库
String dbUrl = "jdbc:mysql://localhost:3306/M_STOREDB";
String dbUser = "bozi";
String dbPwd = "1234";
// 建立数据库的连接
con = java.sql.DriverManager.getConnection(dbUrl, dbUser, dbPwd);
// 创建一个Statement对象
stmt = con.createStatement();
String name1 = new String("小王");
String address1 = new String("上海");
// 增加新纪录
stmt.executeUpdate("insert into M_CUSTOMERS(NAME, AGE, ADDRESS)"
+ "VALUE('" + name1+"',20,'" + address1 + "')");
// 查询记录
rs = stmt.executeQuery("select ID, NAME, AGE , ADDRESS from M_CUSTOMERS");
// 输出查询结果
while (rs.next()) {
long id = rs.getLong(1);
String name = rs.getString(2);
int age = rs.getInt(3);
String address = rs.getString(4);
// 打印数据
System.out.println("id=" + id +", name=" + name +",age=" + age+",address="
+ address);
}
// 删除增加的记录
stmt.executeUpdate("delete from M_CUSTOMERS where name ='"
+ name1 +"'");
// 释放相关的资源
rs.close();
stmt.close();
con.close();
}
}
编译【将mysqldriver.jar 放在和源码同样的位置 方便下面】
javac -cp ./mysqldriver.jar DBTester.java
运行
java -cp .:./mysqldriver.jar DBTester
id=1, name=小红,age=23,address=北京
id=2, name=小张,age=29,address=天津
id=3, name=小丁,age=33,address=山东
id=8, name=小王,age=20,address=上海
直接javac会出错
javac DBTester.java
DBTester.java:17: 错误: 程序包com.mysql.jdbc不存在
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
^
1 个错误
相关代码 实现从外部文件读取配置
所有文件
-rw-rw-r-- 1 alick alick 1030 12月 6 12:31 ConnectionProvider.java
-rw-rw-r-- 1 alick alick 121 12月 6 12:44 db.conf
-rw-rw-r-- 1 alick alick 5115 12月 6 16:10 DBTester2.java
-rw-rw-r-- 1 alick alick 2720 12月 6 17:01 DBTester3.java
-rw-rw-r-- 1 alick alick 782 12月 6 12:32 PropertyReader.java
配置文件 db.conf
alick@alick-Ubuntu:~/workspace/sql_text/test_1$ cat db.conf
JDBC_DRIVER=com.mysql.jdbc.Driver
DB_URL=jdbc:mysql://localhost:3306/M_STOREDB?useSSL=true-------------------【mysql server 5.7.16-0 不加这个出现警告,必须显示的加】
DB_USER=bozi
DB_PASSWORD=1234
读取配置的类
alick@alick-Ubuntu:~/workspace/sql_text/test_1$ cat PropertyReader.java
import java.util.*;
import java.io.*;
public class PropertyReader {
static private Properties ps;
static {
ps = new Properties();
try {
// 假定db.conf文件与PropertyReader.class文件在同一个目录下
InputStream in = PropertyReader.class.getResourceAsStream("./db.conf");
ps.load(in);
in.close();
} catch(Exception e) {
e.printStackTrace();
}
}
public static String get(String key) {
// return ps.getProperty(key);
return (String)ps.get(key);
}
}
实现连接的类
alick@alick-Ubuntu:~/workspace/sql_text/test_1$ cat ConnectionProvider.java
import java.sql.*;
public class ConnectionProvider {
private String JDBC_DRIVER;
private String DB_URL;
private String DB_USER;
private String DB_PASSWORD;
public ConnectionProvider() {
JDBC_DRIVER = PropertyReader.get("JDBC_DRIVER");
DB_URL = PropertyReader.get("DB_URL");
DB_USER = PropertyReader.get("DB_USER");
DB_PASSWORD = PropertyReader.get("DB_PASSWORD");
try {
Class jdbcDriver = Class.forName(JDBC_DRIVER);
java.sql.DriverManager.registerDriver((Driver)jdbcDriver.newInstance());
} catch(Exception e) {
e.printStackTrace();
}
}
public Connection getConnection() throws SQLException {
Connection con = java.sql.DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
return con;
}
}
线程安全的操作
alick@alick-Ubuntu:~/workspace/sql_text/test_1$ cat DBTester2.java
/* 通过ConnectionProvider类来获取Connection对象 */
import java.sql.*;
public class DBTester2 {
private ConnectionProvider provider;
public DBTester2(ConnectionProvider provider) {
this.provider = provider;
}
public void addCustomer(String name, int age, String address) throws SQLException {
Connection con = null;
Statement stmt = null;
try {
con = provider.getConnection();
stmt = con.createStatement();
String sql = "insert into M_CUSTOMERS(NAME, AGE, ADDRESS) values ('" +name+"'," + age + ",'" + address+"')";
stmt.execute(sql);
} finally {
closeStatement(stmt);
closeConnection(con);
}
}
public void deleteCustomer(String name) throws SQLException {
Connection con = null;
Statement stmt = null;
try {
con = provider.getConnection();
stmt = con.createStatement();
String sql = "delete from M_CUSTOMERS where NAME = '" + name +"'";
stmt.execute(sql);
} finally {
closeStatement(stmt);
closeConnection(con);
}
}
public void printAllCumosters() throws SQLException {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
con = provider.getConnection();
stmt = con.createStatement();
// 查询记录
rs = stmt.executeQuery("select ID, NAME, AGE, ADDRESS from M_CUSTOMERS");
// 输出查询结果
while (rs.next()) {
long id = rs.getLong(1);
String name = rs.getString(2);
int age = rs.getInt(3);
String address = rs.getString(4);
System.out.println("id=" + id + ",name=" + name + ", age=" + age + ", address=" + address);
}
} finally {
closeResultSet(rs);
closeStatement(stmt);
closeConnection(con);
}
}
// 展示订单用户
public void showOrdersOwner() {
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
con = provider.getConnection();
stmt = con.createStatement();
rs = stmt.executeQuery("select NAME from M_CUSTOMERS where ID = 1");
if (rs.next()) {
System.out.println(rs.getString(1));
}
// 注意: 上一个打开的ResultSet自动关闭
rs = stmt.executeQuery("select NAME from M_CUSTOMERS where ID = 2");
if (rs.next()) {
System.out.println(rs.getString(1));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
closeResultSet(rs);
closeStatement(stmt);
closeConnection(con);
}
}
// 展示每个客户的所有的订单
public void showOrders() throws SQLException {
// Connection con = null;
// Statement stmt1 = null;
// Statement stmt2 = null;
// ResultSet rs1 = null;
// ResultSet rs2 = null;
// try {
// con = provider.getConnection();
// stmt1 = con.createStatement();
// stmt2 = con.createStatement();
// rs1 = stmt1.executeQuery("select ID, NAME from M_CUSTOMERS");
// while (rs1.next()) {
// // 执行第二个循环出错
// long id = rs1.getLong(1);
// String name = rs1.getString(2);
// rs2 = stmt2.executeQuery("select ORDER_NUMBER, PRICE from M_ORDERS where CUSTOMER_ID=" + id);
// while (rs2.next()) {
// String orderNumber = rs2.getString(1);
// float price = rs2.getFloat(2);
// System.out.println("name=" + name + ", orderNumber= " + orderNumber + ", price=" + price);
// }
// rs2.close();
// }
// rs1.close();
// } finally {
// // closeResultSet(rs);
// closeStatement(stmt1);
// closeStatement(stmt2);
// closeConnection(con);
// }
Connection con = null;
Statement stmt = null;
try{
// 更高效的做法
con = provider.getConnection();
stmt = con.createStatement();
// 使用右外连接查询语句
ResultSet rs = stmt.executeQuery("select NAME, ORDER_NUMBER, PRICE from M_CUSTOMERS c right join M_ORDERS o on c.ID = o.CUSTOMER_ID");
while (rs.next()) {
String name = rs.getString(1);
String orderNumber = rs.getString(2);
float price = rs.getFloat(3);
System.out.println("name="+ name +",orderNumber="+orderNumber+",price="+ price);
}
rs.close();
} finally {
stmt.close();
con.close();
}
}
private void closeResultSet(ResultSet rs) {
try {
if (rs != null)
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
private void closeStatement(Statement stmt) {
try {
if (stmt != null)
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
private void closeConnection(Connection con) {
try {
if (con != null)
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
DBTester2 tester = new DBTester2(new ConnectionProvider());
// tester.addCustomer("小王", 20, "上海");
// tester.printAllCumosters();
// tester.deleteCustomer("小王");
// tester.showOrdersOwner();
tester.showOrders();
}
}
线程不安全但是效率高的操作
alick@alick-Ubuntu:~/workspace/sql_text/test_1$ cat DBTester3.java
/* DBTester3 和Connection对象有相同的生命周期 */
import java.sql.*;
class DBTester3 {
private ConnectionProvider provider;
private Connection con;
private PreparedStatement addStmt; // 用于addCustomers
private PreparedStatement deleteStmt; // 用于deleteCustomers
private PreparedStatement findStmt; // 用于 findCustomers
public DBTester3(ConnectionProvider provider) throws SQLException {
this.provider = provider;
con = provider.getConnection();
}
public void addCustomers(String name, int age, String address) throws SQLException {
String sql = "insert into M_CUSTOMERS(NAME, AGE, ADDRESS) values (?,?,?)";
if (addStmt == null) {
addStmt = con.prepareStatement(sql);
}
addStmt.setString(1, name);
addStmt.setInt(2, age);
addStmt.setString(3, address);
addStmt.execute();
}
public void deleteCustomer(String name) throws SQLException {
String sql = "delete from M_CUSTOMERS where NAME=?";
if (deleteStmt == null) {
deleteStmt = con.prepareStatement(sql);
}
deleteStmt.setString(1, name);
deleteStmt.execute();
}
public void findCustomer(String name, int age) throws SQLException {
String sql = "select ID, NAME, AGE, ADDRESS from M_CUSTOMERS where NAME=? and AGE= ?";
if (findStmt == null) {
findStmt = con.prepareStatement(sql);
}
findStmt.setString(1, name);
findStmt.setInt(2, age);
// 查询记录[不是线程安全的 同一个findStmt可能打开多个ResultSet 出错]
ResultSet rs= findStmt.executeQuery();
try {
// 输出
while (rs.next()) {
long id = rs.getLong(1);
String n = rs.getString(2);
int a = rs.getInt(3);
String address = rs.getString(4);
System.out.println("id:"+id +",name:" +n +",age:"+age + ",address:" + a);
}
} finally {
try {
rs.close();
} catch(SQLException e) {
e.printStackTrace();
}
}
}
public void close() {
try{
addStmt.close();
deleteStmt.close();
findStmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
DBTester3 tester = new DBTester3(new ConnectionProvider());
tester.addCustomers("小王",20,"上海");
tester.addCustomers("小玲",30,"上海");
tester.findCustomer("小王",20);
tester.findCustomer("小玲",30);
tester.deleteCustomer("小王");
tester.deleteCustomer("小玲");
tester.close();
}
}
编译
javac -cp .:../mysqldriver.jar DBTester3.java
运行
java -cp .:../mysqldriver.jar DBTester3
. 当前目录 : 分隔 ../mysqldriver.jar 驱动器所在的相对位置
0 0
- java与mysql的简单连接与编译
- java 数据库Mysql 简单连接与操作。
- mysql与java的连接
- mysql 与 java的连接
- java 与mysql的连接
- java连接mysql与简单操作mysql的增删改查简单例子
- java与MySQL连接
- java与mysql连接
- 编译MySQL驱动 与 Qt 连接 MySQL
- 编译MySQL驱动 与 Qt 连接 MySQL
- java 与MYSQL 的连接 例子 精典
- java与mysql数据库的连接
- java与MySQL数据库的连接
- java与数据库MySQL的连接
- java--jdbc与mysql的连接
- Java与MySQL数据库的连接
- Java代码与mysql数据库的连接
- Java与MySQL之间的连接
- cocoapods升级1.1.1
- C/C++ 离高考还有几天
- java压缩
- 什么是闭包
- 对自己无语的_数据结构-二叉树
- java与mysql的简单连接与编译
- VxWorks学习之路之VxWorks简介
- HTTP初步
- spark 体系架构
- Request.Form获取HTML页面内容
- Hadoop 3.0.0-α1:common:overview
- 多态的知识点总结
- 前端知识点复习
- 编译cuda版的opencv遇到的坑