JavaWeb /IDEA初步学习遇到的问题
1 .mysql数据库连接问题
Class.forName("com.mysql.cj.jdbc.Driver");//注册驱动
老版本的mysql是:com.mysql.jdbc.Driver;
新版本的mysql需要添加 .cj 进行注册驱动
String url="jdbc:mysql://127.0.0.1:3306/db1?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8&useServerPrepStmts=true";
//补充
<property name="url" value="jdbc:mysql://127.0.0.1:3306/db1?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8&useServerPrepStmts=true"/>
String username="root";
String passswd="root";
//在此更新一下&报错问题 原因是IDEA字符识别方面有错误,将**&改为&,**即可
关于URL问题,本机数据库默认127.0.0.1,3306端口,新版本的IDEA需要加上数据库后面的字符串。
数据库的连接可以在IDEA的右边找到Database进场测试连接。
2.Jdbc API使用
(1)DriverManager
用于加载JDBC驱动并且创建于数据库的连接。
Connection conn = DriverManager.getConnection(url, username, passswd);
(2)Connection
代表Java程序与数据库的连接,只有获得该连接对象后才能访问数据库。
Connection connection=dataSource.getConnection();
(3)Statement
用于执行静态的SQL语句,并返回一个结果对象。该接口的对象通过Connection实例的createStatement()方法获得。
Statement statement = conn.createStatement();
(4)Preparestatement
是Statement的子接口,用于执行预编译的SQL语句。该接口扩展了带有参数SQL语句的执行操作,引用该接口中的SQL语句可以使用占位符“?”来代替其参数,然后通过setXxx()方法为SQL语句的参数赋值。其用来预防sql注入语句(‘’or’1’=’1’)
PreparedStatement preparedStatement = conn.prepareStatement(sql);
代码具体如下:
public class Jdbc {
public static void main(String[] arg ) throws Exception{
Class.forName("com.mysql.cj.jdbc.Driver");
String url="jdbc:mysql://127.0.0.1:3306/db1?useUnicode=true&characterEncoding=UTF-8&userSSL=false&serverTimezone=GMT%2B8&useServerPrepStmts=true";
String username="root";
String passswd="****";
Connection conn = DriverManager.getConnection(url, username, passswd);
String name="张三";
String pass="123";
String sql="select * from player where username=? and passwd=?";
PreparedStatement preparedStatement = conn.prepareStatement(sql);
preparedStatement.setString(1,name);
preparedStatement.setString(2,pass);
ResultSet resultSet=preparedStatement.executeQuery();
if(resultSet.next()){
System.out.println("登陆成功");
}else{
System.out.println("登陆失败");
}
/*String sql="select * from player where username='"+name+"' and passwd='"+pass+"'";
System.out.println(sql);
Statement statement=conn.createStatement();
ResultSet resultSet=statement.executeQuery(sql);
if(resultSet.next()){
System.out.println("登陆成功");
}else{
System.out.println("登陆失败");
}*/
/* String sql="select * from account";
Statement statement = conn.createStatement();
ResultSet resultSet=statement.executeQuery(sql);
List<Account> list =new ArrayList<>();
while(resultSet.next()){
Account account=new Account();
int id= resultSet.getInt("id");
String name=resultSet.getString("name");
Double salsry=resultSet.getDouble("money");
account.setId(id);
account.setName(name);
account.setSalsry(salsry);
list.add(account);
}
System.out.println(list);
*/
conn.close();
preparedStatement.close();
resultSet.close();
}
}