JDBC
JDBC编写六步走:
1、注册驱动,告诉java程序我们要链接什么数据库
【mysql为案例】
5.1.x驱动包中的驱动类路径:【com.mysql.jdbc.Driver】
8.x.x驱动包中的驱动类路径:【com.mysql.cj.jdbc.Driver】
2、创建与数据库的链接对象
3、创建操作数据库对象
4、操作数据库对象调用方法执行sql语句,操作数据库
5、如果第4步是查询操作的话,需要进一步分析查询结果
6、释放资源,关闭与数据库的链接
public class JDBCDemo1 {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://192.168.233.101:3306/bigdata?characterEncoding=UTF-8&useUnicode=True&useSSL=false";
String username = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, username, password);
System.out.println("成功获取与mysql数据库的链接对象:" + conn);
Statement state = conn.createStatement();
ResultSet resultSet = state.executeQuery("select t1.location as location,count(1) as counts from (select location from jd_comment where productColor='墨玉青') t1 group by t1.location order by counts desc limit 10");
while (resultSet.next()){
String location = resultSet.getString("location");
String counts = resultSet.getString("counts");
System.out.println(location+": "+counts);
}
state.close();
conn.close();
}
}
sql注入的问题
在执行SQL语句时是使用拼接字符串的操作 导致可以输入特定的字符串篡改逻辑导致 错误执行
解决方法:
1.创建操作对象时创建preparedStatement操作对象,定好sql语句的格式,再根据输入的内容对指定位置进行替换
String sql = "select name,password from sjusers where name=? and password=?"; // ?相当于占位符
preparedStatement = conn.prepareStatement(sql);
preparedStatement.setString(1,name);
2.在根本上解决:
禁止输入带空格的内容 将nextLine()改为next()
preparedStatement.setString(2,pwd);
读取链接getProperty文件
public class MySQLTool {
private static Properties prop;
private static Connection conn;
private MySQLTool(){}
public static Connection getConnection(){
try {
prop = new Properties();
prop.load(new BufferedReader(new FileReader("java/src/com/shujia/day17/mysql.properties")));
String url = prop.getProperty("url");
String username = prop.getProperty("username");
String password = prop.getProperty("password");
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection(url, username, password);
}catch (Exception e){
e.printStackTrace();
}
return conn;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理