??我们首先准备myql的jar包,可以在百度搜maven仓库下载
在idea中加载,file->project structure->Modules->Dependencies->+->JARs or dir...->选择包->apply
?基本代码
查询语句 :
import java.sql.*;
public class MySQLDemo {
public static void main(String[] args) throws Exception{
//将我们的sql语句通过字符串形式保存
String sql="select * from student";
//通过反射加载驱动
Class.forName("com.mysql.jdbc.Driver");
//连接数据库;()里的内容分别是
//我们要连接的数据库的名字,用户名,密码
Connection connection = DriverManager.getConnection
("jdbc:mysql://master:3306/test","root","123456");
//创建能执行sql语句的执行器
CreateStatement cs = connection.createStatement(sql);
//创建负责查询的方法
ResultSet resultSet = cs.executeQuery();
while(resultSet.next()){
String name = resultSet.getString("name");
//这里的"name",也可以换成int类型数字,表示数据库中第几列的数据
System.out.println(name);
}
//关闭上面的连接
resultSet.close();
cs.close();
connection.close();
}
}
?
删除,增加,修改与上面基本相同 ,
不同的地方:connectionh后的方法用:executeUpdate()
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class SelectDemo {
public static void main(String[] args) throws Exception{
String sql="update student set age=20 where id=1011";
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://master:3306/test", "root", "123456");
CreateStatement cs = connection.CreateStatement(sql);
//负责增删改的方法Update()
int i = ps.executeUpdate();
System.out.println(i);
cs.close();
connection.close();
}
}
?字段与sql语句分开
练习:创建一个数据库存储userid 和 password,用jdbc实现验证是否可以登录
?这是我创建login表
代码:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class loginDemo {
public static void main(String[] args) throws Exception{
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://master:3306/test", "root", "123456");
//这里2个变量应该是设置键盘录入,偷懒一下
int userid=1001;
int password=123456;
//利用and 将2个变量都加入筛选条件,字符串拼接
String sql="select * from login where userid="+userid+" and password="+password;
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
//如果有一方字段不是表里的就查询不到任何信息
if(resultSet.next()){
System.out.println("登录成功");
}else{
System.out.println("登录失败");
}
//关闭连接
resultSet.close();
statement.close();
connection.close();
}
}
?
接下来我们看一个有趣的语句
select * from login where userid=111 and password=123123 or 1=1;
前面是不存在的内容,我加了一个or 1=1
查询是有结果的,这根本没按照我的想法走, 我希望的是你输入用户名和密码,现在这写了sql语句绕过了我设置的条件,于是有防止sql注入的方法
先传入sql语句格式,后面内容
?
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class MySQLDemo1 {
public static void main(String[] args) throws Exception {
String sql = "select * from login where userid=? and password=?";
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://master:3306/test", "root", "123456");
PreparedStatement ps = connection.prepareStatement(sql);
//1,2是?的位置,我们对他进行替换
ps.setString(1, "1001");
ps.setString(2, "123456");
ResultSet resultSet = ps.executeQuery();
if(resultSet.next()){
System.out.println("登录成功");
}else{
System.out.println("登录失败");
}
}
}
|