连接数据库的七大步: 1.先导入mysql的jar包
2.加载JDBC驱动
3.连接数据库
4.声明statement
5.执行sql语句
6.查询结果
7.将所有用到的JDBC对象全都关闭掉
代码
package sql;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ConnectSql {
public ConnectSql() {
// TODO Auto-generated constructor stub
try {
// 加载JDBC驱动程序
Class.forName("com.mysql.jdbc.Driver");
System.out.println("数据库驱动加载完毕...");
// 连接数据库
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test", "root", "");
System.out.println("数据库连接完毕");
// 创建statement
Statement stmt = conn.createStatement();// 执行静态的SQL语句
PreparedStatement pstmt = conn.prepareStatement("需要执行的sql语句");// 执行动态的SQL语句
CallableStatement cstmt = conn.prepareCall("需要执行的sql语句");// 执行数据库的存储过程
// 执行SQl语句
ResultSet rs = stmt.executeQuery("需要执行的sql语句");// 返回的为ResultSet对象,可以进行操作
int rows = stmt.executeUpdate("需要执行的sql语句");// 返回的为本次操作的记录数
boolean hasResultSet = stmt.execute("需要执行的sql语句");// 如果在不清楚SQL语句的类型时则只能使用execute方法来执行该SQL语句。如果执行后第一个结果是ResultSet,则返回true,否则返回false
// 查询结果
while (rs.next()) {
String name1 = rs.getString("name");
String name2 = rs.getString(1);// 此方法速度较快
// 列是从左到右开始编号,并且编号从1开始
}
// 操作JDBC对象
// 操作完成以后把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺与与声明顺与相反
if (rs != null) {
rs.close();//关闭记录集
}
if (stmt != null) {
stmt.close();//关闭声明集
}
if (conn != null) {
conn.close();//关闭连接对象
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("找不到驱动!!!");
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("数据库连接失败!");
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new ConnectSql();
}
}
注意
DriverManager.getConnection(url, user, password);此处的URL定义了连接数据库的协议:子协议:数据库的来源地址与连接接口
- Mysql连接的URL:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk;
- useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为gbk,本参数必为true
- characterEncoding=gbk字符编码方式。编码方式详解可查百度