Java 数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。它JDBC是面向关系型数据库的。
简单地说,就是用于执行SQL语句的一类Java API,通过JDBC使得我们可以直接使用Java编程来对关系数据库进行操作。通过封装,可以使开发人员使用纯Java API完成SQL的执行。
首先现在数据库中创建一个数据库并且创建数据表然后导入相关信息
CREATE TABLE `byc` (
`id` int(11) not null auto_increment,
`name` char(20) not null default '' comment '出现错误',
primary key (`id`)
)engine=InnoDB default charset=utf8;
insert into `byc` values ('1','byc'),('2','zyz'),('3','wj'),('4','lxg'),('5','xjh');
那么首先就是插入一条数据信息
import java.sql.*;
public class Main {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");//加载驱动
String jdbc="jdbc:mysql://localhost:3306/test";
Connection conn=DriverManager.getConnection(jdbc, "root", "root");//链接到数据库
Statement state=conn.createStatement(); //容器
String sql="insert into byc values('6','zyzbyc')"; //SQL语句
state.executeUpdate(sql); //将sql语句上传至数据库执行
conn.close();//关闭通道
}
}
然后删除数据库中的一条数据
import java.sql.*;
public class Main {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");//加载驱动
String jdbc="jdbc:mysql://localhost:3306/test";
Connection conn=DriverManager.getConnection(jdbc, "root", "root");//链接到数据库
Statement state=conn.createStatement(); //容器
String sql="delete from byc where id='4'"; //SQL语句
state.executeUpdate(sql); //将sql语句上传至数据库执行
conn.close();//关闭通道
}
}
再然后修改数据库中的一条数据
import java.sql.*;
public class Main {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");//加载驱动
String jdbc="jdbc:mysql://localhost:3306/test";
Connection conn=DriverManager.getConnection(jdbc, "root", "root");//链接到数据库
Statement state=conn.createStatement(); //容器
String sql="update byc set name='这是一条被修改的数据' where id='6' "; //SQL语句
state.executeUpdate(sql); //将sql语句上传至数据库执行
conn.close();//关闭通道
}
}
最后就是查询数据库中的信息
import java.sql.*;
public class Main {
public static void main(String[] args) throws Exception {
//导入驱动包
Class.forName("com.mysql.jdbc.Driver");
//链接至数据库
String jdbc="jdbc:mysql://localhost:3306/test";
Connection conn=DriverManager.getConnection(jdbc, "root", "root");
Statement state=conn.createStatement();//容器
String sql="select * from byc"; //sql语句
ResultSet rs=state.executeQuery(sql); //将sql语句传至数据库,返回的值为一个字符集用一个变量接收
while(rs.next()){ //next()获取里面的内容
System.out.println(rs.getString(1)+" "+rs.getString(2));
//getString(n)获取第n列的内容
//数据库中的列数是从1开始的
}
conn.close();
}
}
当然在多数情况下我们可以将有关与数据库的一些用法写成函数形式,优化代码结构方便调用
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;
}
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;
}
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;
}