一、Java连接数据库步骤

1、导入mysql数据库驱动程序jar包
Ctrl+c复制mysql-connector-java-5.1.37-bin.jar这个包放到eclipse,放到工程根目录下,新建New Folder,Folder name:lib,然后Ctrl+V粘贴。右键mysql-connector-java-5.1.37,Build Path,Add to Build Path,会看到多了一个Referenced Libraries即成功。

2、注册驱动:告知JVM使用的是哪一个数据库的驱动

Class.forName("com.mysql.jdbc.Driver");

3、获得数据库连接
DriverManager类中静态方法:
static Connection getConnection(String url,String user,String password)
url:数据库地址,格式:jdbc:mysql://连接主机IP:端口号/数据库名

String url="jdbc:mysql://localhost:3306/mybase";
String username="root";
String password="123";
Connection con =DriverManager.getConnection(url,username,password);

4、获得语句执行平台
通过数据库连接对象,获得Sql语句的执行者对象
con对象调用方法Statement createStatement()获取Statement对象,将SQL语句发送到数据库,返回值是statement接口的实现类对象,在mysql驱动程序

Statement stat=con.createStatement();

5、执行sql语句

int executeUpdate(String sql)执行数据库中的sql语句,返回值int,表示操作成功数据表多少行

int row=stat.executeUpdaate(INSERT INTO sort(sname,sprice,sdesc) VALUES('汽车用品','500000','涨价'));//sort是数据表的表名
System.out.println(row);//1 标明一行代码写进去了

6、释放资源

一堆close()

stat.close();
con.close();

二、JDBC技术,查询数据表,获取结果集

public static void main(String[] args)throws Exception{
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/mybase";
String username="root";
String password="123";
Connection con=DriverManager.getConnection(url,username,password);
Statement stat=con.createStatement();
String sql="SELECT * FROM sort";//拼写查询SQL
ResultSet rs=stat.executeQuery(sql);//执行sql语句中的select查询,返回值ResultSet接口的实现类对象
while(rs.next()){//ResultSet接口方法 boolean next()返回true有结果集
System.out.println(rs.getInt("sid")+"  "+rs.getString("sname")+"  "+rs.getDouble("sprice") );//获取每列数据,使用ResultSet接口的方法getXXX方法参数,建议写String列名
rs.close();
stat.close();
con.close();
}
}

SQL的注入攻击,登陆案例
java程序实现用户登陆,用户名和密码,容易被别人注入攻击。

三、防止注入攻击
PreparedStatement:SQL预编译存储,多次高效的执行SQL,是Connection数据库连接对象的方法
PreparedStatement prepareStatement(String sql)

public static void main(String[] args)throws Exception{
Class.forName("com.mysql.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/mybase";
String username="root";
String password="123";
Connection con=DriverManager.getConnection(url,username,password);
Scanner sc=new Scanner(System.in);
String user=sc.nextLine();
String pass=sc.nextLine();
String sql="SELECT * FROM users WHERE username=? AND password=?";//方法中参数,SQL语句中的参数全部采用问号占位符
PreparedStatement pst=con.prepareStatement(sql);//调用Connection接口的方法prepareStatement,获取PrepareStatement接口的实现类
pst.setObject(1,user);//调用pst对象的set方法,设置问号占位符上的参数
pst.setObject(2,pass);
ResultSet rs=pst.executeQuery();//执行sql语句中的select查询,返回值ResultSet接口的实现类对象
while(rs.next()){//ResultSet接口方法 boolean next()返回true有结果集
System.out.println(rs.getString("username")+"  "+rs.getString("password") );//获取每列数据,使用ResultSet接口的方法getXXX方法参数,建议写String列名
rs.close();
pst.close();
con.close();

}

JAVA提供访问数据库规范称为JDBC