mysql连接数据库

本文介绍了一个使用Java实现的安全登录系统,通过预编译SQL语句防止SQL注入攻击,并展示了如何利用MySQL数据库完成用户验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql数据库的连接

  1. 建一个工具类(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();


### STM32 使用 OLED 显示屏的学习笔记与教程 #### 关于 STM32 和 OLED 的基础知识 STM32 是一种基于 ARM Cortex-M 架构的微控制器系列,广泛应用于嵌入式开发领域。OLED(有机发光二极管)显示屏因其高对比度、低功耗等特点,在许多项目中被用作显示设备。为了实现 STM32 对 OLED 屏幕的支持,通常需要完成硬件连接以及软件驱动程序的设计。 以下是有关 STM32 驱动 OLED 显示屏的一些关键知识点: #### 硬件连接方式 在 STM32 中,OLED 通常通过 IIC(I²C)、SPI 或 UART 接口进行通信。其中最常见的是 IIC 协议,因为它只需要两根线即可完成数据传输,简化了硬件设计[^1]。具体的硬件连接方法可以参考实际使用的模块手册或相关文档。 #### 软件初始化过程 对于 STM32 来说,使用 OLED 显示屏的第一步是对屏幕进行初始化配置。这一步骤包括设置通信协议参数、定义屏幕分辨率以及其他必要的寄存器操作。以下是一个简单的初始化代码示例: ```c #include "stm32f10x.h" #include "OLED.h" int main() { SystemInit(); // 初始化系统时钟 OLED_Init(); // 初始化 OLED 模块 while (1) { OLED_ShowString(2, 1, "Hello"); // 在第 2 行第 1 列显示字符串 "Hello"[^3] } } ``` 上述代码展示了如何调用 `OLED_Init()` 函数来启动 OLED 并利用 `OLED_ShowString` 方法向屏幕上写入文字信息。 #### 数据打印至 OLED 屏幕 如果希望将来自串口的数据实时展示到 OLED 上,则需编写额外的功能逻辑处理接收到的信息并将其传递给 OLED 控制接口。例如,可以通过中断服务例程捕获串口输入流,并逐字符绘制到指定位置上[^2]。 #### 进阶功能扩展 除了基本的文字输出外,还可以尝试实现更复杂的图形化界面效果,比如加载位图图像或者支持多语言字体渲染等功能。这些都需要深入理解底层库文件结构及其 API 定义说明。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值