JDBC关于#sql#的问题,如何解决?

为什么语句查找不到对应字段,在查阅资料后我发现加上引号就可以查到。但是我在代码中加入引号后还是查不到,是哪里出现了问题

img

img


加入引号后数据库中能够查询到但是我在代码里面修改后查不到,是我的代码哪里出现了问题吗

img

img

语法啊兄弟。。。。这里拐了两个弯,不是一个

第一个弯,程序接收到数据,这个时候他是字符串格式的,你可以直接拼接到 sql 指令里

第二个弯,数据库指令,接收到的指令也会按语法检查,如果没有引号,那么就是字段名变量之类的了,但是他又找不到,所以报错

所以,你在程序里拼接数据库指令的时候,需要预想指令的完整样子是什么样的

img

  • 这篇博客也许可以解决你的问题👉 :java大数据学习---第二阶段---第一天-----------数据库 SQL 数据库的常见操作 表的常见操作 表数据/记录的常见操作 数据类型 字段约束
  • 除此之外, 这篇博客: Java中JDBC的本质及使用详解(妹子看了都说好!!!)中的 2.不需要处理查询结果集的JDBC实例(执行的sql语句是为增、删、改时) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • JavaBean 还有数据表我就继续用上面准备好的就行。
    这里我只演示“增”(即向学生表中添加一条数据),其他的“删”和“改”基本过程都一样,只有sql语句和站位符位置不一样,留给大家自由探索

    代码如下(示例):

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    
    public class JDBCAddTest {
    
    	public static void main(String[] args) {
    		JDBCAddTest jdbcAddTest = new JDBCAddTest();
    		jdbcAddTest.addStudent();
    
    	}
    
    	private void addStudent() {
    		Connection connection = null;
    		PreparedStatement preparedStatement = null;
    		try {
    			// 1、启动驱动
    			Class.forName("com.mysql.jdbc.Driver");
    			// 2、建立连接
    			connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "123456");
    			// 3、获取数据库操作对象
    			Student student = new Student(5, "jack");
    			String sql = "insert into student values(?,?)";
    			preparedStatement = connection.prepareStatement(sql);
    			preparedStatement.setString(2, student.getStudentName());
    			preparedStatement.setInt(1, student.getStudentID());
    			// 4、执行sql语句
    			int executeUpdate = preparedStatement.executeUpdate();
    			System.out.println(executeUpdate);
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			// 6、关闭资源
    			if (preparedStatement != null) {
    				try {
    					preparedStatement.close();
    				} catch (SQLException e) {
    					e.printStackTrace();
    				}
    				preparedStatement = null;
    			}
    
    			if (connection != null) {
    				try {
    					connection.close();
    				} catch (SQLException e) {
    					e.printStackTrace();
    				}
    				connection = null;
    			}
    		}
    		
    	}
    
    }
    

    代码如下(输出):

    这里输出的1代表的是数据库中有一条数据受到了影响(如果是其他的数值的返回对相应的就是数据库中有几条数据被影响了)

    1
    

    为了保险起见查看一下数据库中的学生表
    在这里插入图片描述