JDBC的全称是:JavaDataBaseConnectivity,指的是java数据库连接,是一种用于执行SQL语句的JavaAPI。它的类方法集中在java.sql包中。
主要用到3个接口:
1.Connection接口,会根据不同的驱动产生不同的连接
2.Statement接口,发送sql语句
3.ResultSet接口(结果集),是用来接收select语句返回的查寻结果的。其实质类似于集合。
4.PrepareStatement接口:
要用到的类:
DriverManager类(驱动管理器),它可以创建连接,它本身就是一个创建Connection的工厂(Factory)。
JDBC应用步骤
1,注册加载一个driver驱动
2,创建数据库连接(Connection)
3,创建一个数据库操作对象Statement或PrepareStatement(发送sql,现在用得最广泛的是PrepareStatement)
4,操作数据库(调用PrepareSatement的excute(String sql)方法等方法对数据库发送Sql语句并进行操作)
5,处理结果集(进行查询操作是,即调用excuteQuery(String sql)方法返回一个ResultSet类的对象,即数据库执行sql语句得到的表
对结果集的处理包括读取、修改ResultSet对象中的数据。)
6,关闭Statement和连接Connection。
示例代码:用java程序执行MySql的搜索功能并打印出相关表格
package InputSql;
import java.sql.*;
public class Sql {
private static String urlName = null;
private static String DriverName = "com.mysql.jdbc.Driver";
private static String user = "root";
private static String pwd = "18157143347";
private static Connection c = null;
/*
* connect方法用来将根据参数-databaseName,与指定的数据库连接
* DriverManager类中的getConnexttion()静态方法即可返回一个与指定的数据库相连的Connection对象
*/
public static void connect(String databaseName) {
urlName = "jdbc:mysql://localhost/" + databaseName;
try {
c = DriverManager.getConnection(urlName, user, pwd);
} catch (Exception ex) {
ex.printStackTrace();
}
}
/*
* 在利用connection.prepareStatement()方法产生Statement对象,调用Statement的excuteQuery()方法即可
* 向connection对象连接的数据发送搜索sql语句了,并返回储存查询值的resultSet对象
* 利用resultSet对象中的getMetaData
* ()得到记录ResultSet的列信息的MetaData对象,即列的属性和列数,即可打印出整个表的信息
*/
public static void search(String sql) {
ResultSet search = null;
try {
PreparedStatement ps = c.prepareStatement(sql);
search = ps.executeQuery(sql);
search.last();
int cols = search.getMetaData().getColumnCount();
search.beforeFirst();
while (search.next()) {
for (int i = 1; i <= cols; i++) {
System.out.print(search.getString(i) + " ");
}
System.out.println();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
search.close();
c.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*
* 主方法
*/
public static void main(String[] args) {
try {
// 这里Class.forName(DriverName)去掉程序也可正常进行,在这里没什么作用
Class.forName(DriverName).newInstance();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InstantiationException ex) {
ex.printStackTrace();
}
connect("jisuanji122");
search("select * from student");
}
}