纯Java驱动方式由JDBC驱动直接访问数据库,驱动程序完全由Java语言编写,运行速度快,而且具备了跨平台的特点。使用纯Java驱动方式进行数据库连接,首先需要下载数据库厂商提供的驱动程序JAR包,并将JAR包引入工程中。本示例使用的数据库是MySQL
5.5(对应驱动程序JAR包下载地址:http://download.csdn.net/download/jisuanjiguoba/10247910),
假定在MySQL数据库中已经建立名称为test的数据库。
示例代码:
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Statement;
public class Jdbctest {
public static void main(String[] args) throws Exception {
Connection conn = null;
String user = "root";
String pwd = "root";
String sql;
// MySQL的JDBC URL编写方式:jdbc:mysql://主机名称:连接端口/数据库的名称?参数=值
// 避免中文乱码要指定useUnicode和characterEncoding
// 在运行本程序前先创建test数据库
//String url = "jdbc:mysql://localhost:3306/test";
//String url = "jdbc:mysql://localhost:3306/test?"
//+
"user=root&password=root&useUnicode=true&characterEncoding=UTF8";
String url = "jdbc:mysql://localhost:3306/test?"
+ "user=root&password=root";
try {
Class.forName("com.mysql.jdbc.Driver");// 动态加载mysql驱动
System.out.println("MySQL驱动程序加载成功");
conn = DriverManager.getConnection(url);
// Statement里面带有很多方法,比如executeUpdate可以实现插入,更新和删除等
Statement stmt = conn.createStatement();
sql = "create table student(NO char(20),name varchar(20),primary key(NO))
charset utf8 collate utf8_general_ci";
int result = stmt.executeUpdate(sql);//
executeUpdate语句会返回一个受影响的行数,如果返回-1就没有成功
if (result != -1) {
System.out.println("创建数据表成功");
sql = "insert into student(NO,name) values('2018006','陈星')";
result = stmt.executeUpdate(sql);
sql = "insert into student(NO,name) values('2018008','李杰')";
result = stmt.executeUpdate(sql);
sql = "select * from student";
ResultSet rs = stmt.executeQuery(sql);//
executeQuery会返回结果的集合,否则返回空值
System.out.println("学号\t姓名");
while (rs.next()) {
System.out.println(rs.getString(1) + "\t" +
rs.getString(2));
}
}
} catch (SQLException e) {
System.out.println("MySQL操作有误");
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
conn.close();
}
}
}
注意事项:
①如果sql = "create table student(NO char(20),name varchar(20),primary key(NO))";
则会出现如下情况
Incorrect string value: '\xE9\x99\xB6\xE4\xBC\x9F...' for column
'name' at row 1
因此需要将其改为sql = "create table student(NO char(20),name varchar(20),primary
key(NO))charset utf8 collate utf8_general_ci"; 以便在创建数据表的时候设置编码(整个过程需要注意:
创建数据库的时候数据编码设置是否有误,连接数据库的时候数据编码是否有误,创建数据表的时候数据编码是否有误)。
②如果出现java.sql.SQLException: Access denied for user 'root'@'localhost' (using
password: NO)则是由于安装MySQL数据库时默认的初始化密码造成的问题,可根据相关更改MySQL初始密码的教程进行密码重置。