为什么语句查找不到对应字段,在查阅资料后我发现加上引号就可以查到。但是我在代码中加入引号后还是查不到,是哪里出现了问题
语法啊兄弟。。。。这里拐了两个弯,不是一个
第一个弯,程序接收到数据,这个时候他是字符串格式的,你可以直接拼接到 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
为了保险起见查看一下数据库中的学生表