1.加载数据库驱动
(1)在工程目录下新建Floder->Folder name:lib
(2)在lib目录导入数据库驱动.jar包,再选择Build Path->Add to Build Path,最后才能使用.jar包下的API。
(3)加载驱动源码(驱动文件下src文件目录)
之后选中src文件即可。
2.获取数据库连接方式一:
@Test
public void testConnection1() throws SQLException {
// 获取Driver实现类对象
Driver driver = new com.mysql.jdbc.Driver();
// url:http://localhost:8080/gmall/keyboard.jpg
// jdbc:mysql:协议
// localhost:ip地址
// 3306:默认mysql的端口号
// test:test数据库
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8";
// 将用户名和密码封装在Properties中
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "123456");
Connection conn = driver.connect(url,info);
System.out.println(conn);
}
①Eclipse连接数据库报错com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'test'.
背景:用户名密码正确,database在mysql中存在。
命令行下执行show databases(),test数据库是存在的。
找资料发现有可能是有其他mysql服务自启动了,导致程序有点混乱。
键盘“windows”+R 输入services.msc
发现有mysql这个服务是启动的。关掉即可。
②Eclipse连接数据库报错:Unknown initial character set index '255' received from server.
java.sql.SQLException: Unknown initial character set index ‘255’ received from server.
编码不匹配的原因
方法一:直接在连接的URL后加上
?useUnicode=true&characterEncoding=utf8 即可。
方法二:换一个新版本的mysql-connector-java。
5.1.44的character_set_server和character_set_database系统变量的默认值已从latin1更改为utf8mb4。
mysql 8.0版本与mysql数据库驱动8.0以上版本
第一步:把驱动的类名改为:
static String driver="com.mysql.cj.jdbc.Driver";
第二步:在访问mysql的url后加入时区设置:
static String url="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&serverTimezone=UTC";(UTC表示标准时区)
Druid数据库连接池技术的实现
①在WEB-INF目录下创建一个lib目录,把mysql数据库驱动,Druid数据库连接池驱动放到lib目录下,并加载到lib。
②编写JDBCUtils类,实现数据库连接池技术连接数据库。
编写druid.properties配置文件。
public class JDBCUtils {
/*public static void main(String[] args) {
try {
Connection conn = JDBCUtils.getConnection();//每调用一次getConnection()就创建一个数据库连接池
System.out.println(conn);
} catch (Exception e) {
e.printStackTrace();
}
}*/
/**
* 获取数据库连接池中的连接
* @return
*/
private static DataSource dataSource;
//使用静态代码块初始化数据库连接池
static {
try {
Properties pros = new Properties();
//InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
//读取jdbc.properties属性配置文件
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
//从流中加载数据
pros.load(is);
//创建数据库连接池
dataSource = DruidDataSourceFactory.createDataSource(pros);
} catch (Exception e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
Connection conn = null;
try {
conn = dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
/* public static Connection getConnection() throws Exception {
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");
//FileInputStream is = new FileInputStream(new File("src/jdbc.properties"));
Properties pros = new Properties();
pros.load(is);
//创建一个Druid数据库连接池
DataSource dataSource = DruidDataSourceFactory.createDataSource(pros);
Connection conn = dataSource.getConnection();
return conn;
}*/
/**
* 关闭连接,放回数据库连接池
* @param conn
*/
public static void close(Connection conn){
if (conn != null);
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public class JDBCUtilsTest {
@Test
public void test(){
Connection conn = JDBCUtils.getConnection();
System.out.println(conn);
JDBCUtils.close(conn);
}
}
使用数据库连接池获取数据库连接,连接使用完一定要记得及时关闭数据库连接。