数据库/数据库链接报错解决/JDBC踩坑集合

JDBC向MySQL中添加字段时利用JUnit测试报错:java.lang.Exception: Method getConnection2() should be void,源码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import org.junit.Test;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class JDBCTest {

@Test
public Connection getConnection2() throws Exception {
Properties properties = new Properties();

InputStream in = this.getClass().getClassLoader().getResourceAsStream("JDBC.properties");
properties.load(in);

String driverClass = properties.getProperty("driver");
String jdbcUrl = properties.getProperty("jdbcUrl");
String user = properties.getProperty("user");
String password = properties.getProperty("password");

Class.forName(driverClass);

return DriverManager.getConnection(jdbcUrl, user, password);
}

/**
* 通过JDBC向指定的数据表中插入一条记录
*/
@Test
public void testStatement() throws Exception{
//1.获取数据库链接
Connection conn = getConnection2();

//2.准备插入的SQL语句
String sql = "INSERT INTO customers(`Name`,Email,Birth) VALUES('xiaoming','456@sina.com','2001-1-2');";

//3.执行插入
//(1)获取操作SQL语句的Statement对象:调用Connection的createStatement()方法来获取
Statement statement = conn.createStatement();

//(2)调用Statement对象的executeUpdate(sql)执行SQL语句进行插入
statement.executeUpdate(sql);

//(3)关闭Statement对象
statement.close();

//4.关闭连接
conn.close();
}
}

根据提示可以看到getConnection2()在测试单元里返回值必须是void,解决方法是注释掉getConnection2()方法上面的@Test语句

问题二:JDBC向表中添加字段时,使用中文出现乱码问题


在Navicat中右键表选择设计表,在选项中修改表的默认字符集

将默认的gb2321字符集改为utf8并保存
然后在添加代码url中加入?useUnicode=true&characterEncoding=utf8
重新添加数据,显示正常

Comments