前言:什么是JDBC
维基百科的简介:
Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。它JDBC是面向关系型数据库的。
简单地说,就是用于执行SQL语句的一类Java API,通过JDBC使得我们可以直接使用Java编程来对关系数据库进行 *** 作。通过封装,可以使开发人员使用纯Java API完成SQL的执行。
一、准备工作(一):MySQL安装配置和基础学习
使用JDBC *** 作数据库之前,首先你需要有一个数据库。这里提供了3个链接供读者自学,如果曾有过SQL语言的使用经历(包括在学校中的课堂学习),前两个链接足以上手。
1.安装和配置:mysql安装图解 mysql图文安装教程(详细说明)
2.基本 *** 作:21分钟 MySQL 入门教程
3.简易命令查询 :一千行MySQL学习笔记
建议边看入门教程,边练习,在练习insert、update、select、delete等基本 *** 作的同时,将后面要用的表建好。
下图是我接下来用于演示的数据库的表。
二、准备工作(二):下载数据库对应的jar包并导入
使用JDBC需要在工程中导入对应的jar包。数据库与JDBC包的对应关系可以参考各种数据库对应的jar包、驱动类名和URL格式。在Eclipse下的导入方法:
在工程的图标上右击,选择”Properties”,在”Java Bulid Path”中选择”Add External JARs…”,选择下载并解压后获得的jar包。
如果对MySQL进行 *** 作,这时下面的import就不会报错了:
import com.mysql.jdbc.Connectionimport com.mysql.jdbc.PreparedStatement
除此以外,还需要JDBC的包,直接import即可。
import java.sql.DriverManagerimport java.sql.ResultSetimport java.sql.SQLException
三、JDBC基本 *** 作
为了简单起见,与数据库相关的 *** 作、命令、参数都被硬编码了。有兴趣的读者可以对这些进行探索,降低数据与 *** 作的耦合性。
先看具体代码并实践,本文第五部分对用到的API稍作了研究。
下面的所有方法和数据成员都在public class JDBCOperation内部。
(1)定义记录的类(可选)
这样做主要是为了便于 *** 作和接口定义,是非必须的。
static class Student { private String Id private String Name private String Sex private String Age
Student(String Name, String Sex, String Age) { this.Id = null//default
this.Name = Name this.Sex = Sex this.Age = Age
} public String getId() { return Id
} public void setId(String Id) { this.Id = Id
} public String getName() { return Name
} public void setName(String Name) { this.Name = Name
} public String getSex() { return Sex
} public void setSex(String Sex) { this.Sex = Sex
} public String getAge() { return Age
} public void setage(String Age) { this.Age = Age
}
}
(2)连接的获取
在 *** 作前必须先获取与数据库的连接。
driver、url的格式同样可以参考各种数据库对应的jar包、驱动类名和URL格式。
private static Connection getConn() {
String driver = "com.mysql.jdbc.Driver"
String url = "jdbc:mysql://localhost:3306/samp_db"
String username = "root"
String password = ""
Connection conn = null try {
Class.forName(driver)//classLoader,加载对应驱动
conn = (Connection) DriverManager.getConnection(url, username, password)
} catch (ClassNotFoundException e) {
e.printStackTrace()
} catch (SQLException e) {
e.printStackTrace()
} return conn
}
(3)insert
private static int insert(Student student) {
Connection conn = getConn() int i = 0
String sql = "insert into students (Name,Sex,Age) values(?,?,?)"
PreparedStatement pstmt try {
pstmt = (PreparedStatement) conn.prepareStatement(sql)
pstmt.setString(1, student.getName())
pstmt.setString(2, student.getSex())
pstmt.setString(3, student.getAge())
i = pstmt.executeUpdate()
pstmt.close()
conn.close()
} catch (SQLException e) {
e.printStackTrace()
} return i
}
(4)update
private static int update(Student student) {
Connection conn = getConn() int i = 0
String sql = "update students set Age='" + student.getAge() + "' where Name='" + student.getName() + "'"
PreparedStatement pstmt try {
pstmt = (PreparedStatement) conn.prepareStatement(sql)
i = pstmt.executeUpdate()
System.out.println("resutl: " + i)
pstmt.close()
conn.close()
} catch (SQLException e) {
e.printStackTrace()
} return i
}
(5)select
以select * from XXX为例。
private static Integer getAll() {
Connection conn = getConn()
String sql = "select * from students"
PreparedStatement pstmt try {
pstmt = (PreparedStatement)conn.prepareStatement(sql)
ResultSet rs = pstmt.executeQuery() int col = rs.getMetaData().getColumnCount()
System.out.println("============================") while (rs.next()) { for (int i = 1i <= coli++) {
System.out.print(rs.getString(i) + "\t") if ((i == 2) &&(rs.getString(i).length() <8)) {
System.out.print("\t")
}
}
System.out.println("")
}
System.out.println("============================")
} catch (SQLException e) {
e.printStackTrace()
} return null
}
(6)delete
private static int delete(String name) {
Connection conn = getConn() int i = 0
String sql = "delete from students where Name='" + name + "'"
PreparedStatement pstmt try {
pstmt = (PreparedStatement) conn.prepareStatement(sql)
i = pstmt.executeUpdate()
System.out.println("resutl: " + i)
pstmt.close()
conn.close()
} catch (SQLException e) {
e.printStackTrace()
} return i
}
四、测试
在测试前,需要在系统中打开对应数据库的服务。MySQL在Windows下的启动命令为
net start mysql
测试代码
public static void main(String args[]) {
JDBCOperation.getAll()
JDBCOperation.insert(new Student("Achilles", "Male", "14"))
JDBCOperation.getAll()
JDBCOperation.update(new Student("Bean", "", "7"))
JDBCOperation.delete("Achilles")
JDBCOperation.getAll()
}
Eclipse中的输出
============================
1 Ender male 8
2 Bean male 6
3 Petra fema 9
4 Peter male 9
5 _Graff male 40
6 GOD fema 255
============================
============================
1 Ender male 8
2 Bean male 6
3 Petra fema 9
4 Peter male 9
5 _Graff male 40
6 GOD fema 255
7 Achilles Male 14
============================resutl: 1resutl: 1
============================
1 Ender male 8
2 Bean male 7
3 Petra fema 9
4 Peter male 9
5 _Graff male 40
6 GOD fema 255
============================
一、准备工作(一):MySQL安装配置和基础学习使用JDBC *** 作数据库之前,首先你需要有一个数据库。这里提供了3个链接供读者自学,如果曾有过SQL语言的使用经历(包括在学校中的课堂学习),前两个链接足以上手。
1.安装和配置:mysql安装图解 mysql图文安装教程(详细说明)
2.基本 *** 作:21分钟 MySQL 入门教程
3.简易命令查询 :一千行MySQL学习笔记
建议边看入门教程,边练习,在练习insert、update、select、delete等基本 *** 作的同时,将后面要用的表建好。
下图是我接下来用于演示的数据库的表。
二、准备工作(二):下载数据库对应的jar包并导入
使用JDBC需要在工程中导入对应的jar包。数据库与JDBC包的对应关系可以参考各种数据库对应的jar包、驱动类名和URL格式。在Eclipse下的导入方法:
在工程的图标上右击,选择”Properties”,在”Java Bulid Path”中选择”Add External JARs…”,选择下载并解压后获得的jar包。
如果对MySQL进行 *** 作,这时下面的import就不会报错了:
import com.mysql.jdbc.Connection
import com.mysql.jdbc.PreparedStatement
除此以外,还需要JDBC的包,直接import即可。
import java.sql.DriverManager
import java.sql.ResultSet
import java.sql.SQLException
三、JDBC基本 *** 作
为了简单起见,与数据库相关的 *** 作、命令、参数都被硬编码了。有兴趣的读者可以对这些进行探索,降低数据与 *** 作的耦合性。
先看具体代码并实践,本文第五部分对用到的API稍作了研究。
下面的所有方法和数据成员都在public class JDBCOperation内部。
(1)定义记录的类(可选)
这样做主要是为了便于 *** 作和接口定义,是非必须的。
static class Student {
private String Id
private String Name
private String Sex
private String Age
Student(String Name, String Sex, String Age) {
this.Id = null//default
this.Name = Name
this.Sex = Sex
this.Age = Age
}
public String getId() {
return Id
}
public void setId(String Id) {
this.Id = Id
}
public String getName() {
return Name
}
public void setName(String Name) {
this.Name = Name
}
public String getSex() {
return Sex
}
public void setSex(String Sex) {
this.Sex = Sex
}
public String getAge() {
return Age
}
public void setage(String Age) {
this.Age = Age
}
}
(2)连接的获取
在 *** 作前必须先获取与数据库的连接。
driver、url的格式同样可以参考各种数据库对应的jar包、驱动类名和URL格式。
private static Connection getConn() {
String driver = "com.mysql.jdbc.Driver"
String url = "jdbc:mysql://localhost:3306/samp_db"
String username = "root"
String password = ""
Connection conn = null
try {
Class.forName(driver)//classLoader,加载对应驱动
conn = (Connection) DriverManager.getConnection(url, username, password)
} catch (ClassNotFoundException e) {
e.printStackTrace()
} catch (SQLException e) {
e.printStackTrace()
}
return conn
}
(3)insert
private static int insert(Student student) {
Connection conn = getConn()
int i = 0
String sql = "insert into students (Name,Sex,Age) values(?,?,?)"
PreparedStatement pstmt
try {
pstmt = (PreparedStatement) conn.prepareStatement(sql)
pstmt.setString(1, student.getName())
pstmt.setString(2, student.getSex())
pstmt.setString(3, student.getAge())
i = pstmt.executeUpdate()
pstmt.close()
conn.close()
} catch (SQLException e) {
e.printStackTrace()
}
return i
}
(4)update
private static int update(Student student) {
Connection conn = getConn()
int i = 0
String sql = "update students set Age='" + student.getAge() + "' where Name='" + student.getName() + "'"
PreparedStatement pstmt
try {
pstmt = (PreparedStatement) conn.prepareStatement(sql)
i = pstmt.executeUpdate()
System.out.println("resutl: " + i)
pstmt.close()
conn.close()
} catch (SQLException e) {
e.printStackTrace()
}
return i
}
(5)select
以select * from XXX为例。
private static Integer getAll() {
Connection conn = getConn()
String sql = "select * from students"
PreparedStatement pstmt
try {
pstmt = (PreparedStatement)conn.prepareStatement(sql)
ResultSet rs = pstmt.executeQuery()
int col = rs.getMetaData().getColumnCount()
System.out.println("============================")
while (rs.next()) {
for (int i = 1i <= coli++) {
System.out.print(rs.getString(i) + "\t")
if ((i == 2) &&(rs.getString(i).length() <8)) {
System.out.print("\t")
}
}
System.out.println("")
}
System.out.println("============================")
} catch (SQLException e) {
e.printStackTrace()
}
return null
}
(6)delete
private static int delete(String name) {
Connection conn = getConn()
int i = 0
String sql = "delete from students where Name='" + name + "'"
PreparedStatement pstmt
try {
pstmt = (PreparedStatement) conn.prepareStatement(sql)
i = pstmt.executeUpdate()
System.out.println("resutl: " + i)
pstmt.close()
conn.close()
} catch (SQLException e) {
e.printStackTrace()
}
return i
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)