mysql数据库的连接
-
建一个工具类(tools 工具)在其中 创建一个类来存放
package tools; import java.sql.*; public class DB { protected Connection conn =null; //提供数据库连接 public void getConn() { //加载驱动 String url = "jdbc:mysql://localhost:3306/ddd"; String name ="root"; String pwd ="root"; //抛出异常 //快捷键alt+shift+z+向下 try { Class.forName("com.mysql.jdbc.Driver"); conn= DriverManager.getConnection(url,name,pwd); } catch (ClassNotFoundException | SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
2、再建一个保存放sql语句并建立一个Test_denlu类
public class Test_denlu extends DB { public void longli() { Scanner input =new Scanner(System.in);//这里使用Scanner类来接收 System.out.print("请输入账号"); String no =input.next(); System.out.print("请输入密码"); String pwdString=input.next(); //String sql = "select name from hmc where zhanhao='"+no+"' and pwd ='"+pwdString+"'" ; String sql = "select name from hmc where zhanhao='"+no+"' and pwd ='suibian' or '1'='1'" ; //上面用密码改为'suibian' or '1'='1'后任意密码都能登录 //获得连接对象 getConn(); try { Statement st=conn.createStatement(); ResultSet rs=st.executeQuery(sql); if (rs.next()) { System.out.println("欢迎你"+rs.getString("name")); }else { System.out.println("滚"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
3、然后再创建一个测试类
public class Test_cs {
public static void main(String[] args) {
new Test_denlu().longli();
}
}
对前面的sql进行修改防止sql注入
//sql语句使用?(占位符),防止sql注入
String sql ="select name from hmc where zhanhao=? and pwd=?" ;
//再使用.prepareStatement()方法代替原有的.createStatement()方法
PreparedStatement ps = conn.prepareStatement(sql);
//再设置使用setString方法给sql语句中的两个占位符赋值
ps.setString(1, no);
ps.setString(2, pwdString);
ResultSet rs=ps.executeQuery();