在我们刚开始使用数据库的时候,发现只能在mysql编辑器里面使用sql语句来完成对数据库的操作,那我们怎么来通过Java来操控数据库呢?这个时候就有了JDBC的出现。
JDBC 指java数据库连接(Java Database Connectivity),是一种标准的Java应用编程接口( JAVA API),JDBC本质上是Sun公司制定的一套接口(interface)!原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句来达到操控数据库的功能。
从根本上来说,JDBC 是一种规范,它提供了一套完整的接口,允许便携式访问到底层数据库,因此可以用 Java 编写不同类型的可执行文件,例如:
所有这些不同的可执行文件就可以使用 JDBC 驱动程序来访问数据库,这样可以方便的访问数据。JDBC 具有 ODBC 一样的性能,允许 Java 程序包含与数据库无关的代码。
首先需要导入mysql驱动jar包
第一步:在当前项目下创建一个lib的目录:
第二步:把mysql的驱动jar拷贝到lib目录:
第三步:把lib添加到项目中,作为当前项目的第三方库
然后找到自己的jar包导入即可
注意:加载驱动类就只有一句话:Class.forName("com.mysql.jdbc.Driver"),而且要带上包名,不能只导入Driver,可以使用下面的方法,更快捷准确
获取连接的也只有一句代码:DriverManager.getConnection(url,username,password)
,其中username和password是登录数据库的用户名和密码. url查对复杂一点,它是用来找到要连接数据库“网址”,就好比你要浏览器中查找百度时,也需要提供一个url。下面是mysql的url:
举个例子:
String url="jdbc:mysql://localhost:3306/mynbuseUnicode=true&cha
racterEncoding=utf8&useSSL=false";
Connection connection = DriverManager.getConnection(url, "root", "123456");
//url:访问数据库服务器的网址
//jdbc :协议名 jdbc :mysql://localhost:3306/mytest
//username:用户名
//password:密码
//localhost:mysql服务器的ip地址,本机远程的mysql服务器:真实ip
//3306:mysql服务器的默认端口
//mytest:访问的那个数据库名称
//?k1=v1 :数据库的其他参数
Statement statement = connection.createStatement();
String sql = "select * from stud";
ResultSet resultSet = statement.executeQuery(sql);
或者
String sql1="insert into zm values('"+t1+"','"+t2+"')";
statement.executeUpdate(sql1);
注意:查询语句是executeQuery() 增删改是executeUpdate() 注意区分
对于executeQuery() 查询结果集有next()方法,跟集合里面的迭代器中的next()方法有点差不多,还有getXXX()方法获取每一列的信息
常用的有以下几种:
Object getObject(int col)
String getString(int col)
int getInt(int col)
double getDouble(int col)
举例:
String sql = "select * from stud";
ResultSet resultSet = statement.executeQuery(sql);
while(resultSet.next()){
int anInt = resultSet.getInt(1);
String string = resultSet.getString(2);
String string1 = resultSet.getString(3);
int anInt1 = resultSet.getInt(4);
System.out.println(anInt+" "+string+" "+string1+" "+anInt1);
}
与IO流一样,使用后的东西都需要关闭!关闭的顺序是先得到的后关闭,后得到的先关闭。
如果使用的try catch获取异常,关闭注意放入finally语句块中。
完整代码举例:
import org.junit.Test;
import java.sql.*;
public class TestMySql {
public Connection getConnection() throws Exception {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false";
return DriverManager.getConnection(url, "root", "root");
}
@Test
public void insert() throws Exception {
Connection con = getConnection();
Statement stmt = con.createStatement();
String sql = "insert into user values('zhangSan', '123')";
stmt.executeUpdate(sql);
System.out.println("插入成功!");
stmt.close();
con.close();
}
@Test
public void update() throws Exception {
Connection con = getConnection();
Statement stmt = con.createStatement();
String sql = "update user set password='456' where username='zhangSan'";
stmt.executeUpdate(sql);
System.out.println("修改成功!");
stmt.close();
con.close();
}
@Test
public void delete() throws Exception {
Connection con = getConnection();
Statement stmt = con.createStatement();
String sql = "delete from user where username='zhangSan'";
stmt.executeUpdate(sql);
System.out.println("删除成功!");
stmt.close();
con.close();
}
@Test
public void query() throws Exception {
Connection con = getConnection();
Statement stmt = con.createStatement();
String sql = "select * from user";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()) {
String username = rs.getString(1);
String password = rs.getString(2);
System.out.println(username + ", " + password);
}
rs.close();
stmt.close();
con.close();
}
}