利用java面向对像编程,向数据库中插入数据时。遇到插入的数据为空的情况。在此做一小结:
1.数据库连接正正常
2.sql语句没有问题
3.程序没有报异常
4.代码:
import java.util.Scanner;
import org.junit.Test;
public class JDBCTest { //2).在测试方法testAAddStudent()中 //1.获取从控制台输入的Student对象:Student student=getStudentFromConsole(); //2.调用addStudent(Student stu)方法执行插入操作 @Test public void testAAddStudent() { Student student=getStudentFromConsole(); addStudent(student); } /** * 从控制台输入学生的信息 */ //@Test public Student getStudentFromConsole(){ Scanner scanner=new Scanner(System.in); Student student=new Student(); //System.out.println("@Stu1"+student); System.out.println("Flowid:"); student.setFlowid(scanner.nextInt()); System.out.println("Type:"); student.setType(scanner.nextInt()); System.out.println("IdCard:"); student.setIdCard(scanner.next()); System.out.println("ExamCard:"); student.setExamCard(scanner.next()); System.out.println("StudentName:"); student.setStudentName(scanner.next()); System.out.println("Localtion:"); student.setLocaltion(scanner.next()); System.out.println("Grade:"); student.setGrade(scanner.nextInt()); scanner.close(); return student; //System.out.println("@stu2"+student); } public void addStudent(Student stu){ //Student student=new Student(); //1.准备一条sql语句:String sql="INSERT INTO examstudent Values("+stu.getFlowid()
+","+stu.getType() +",'"+stu.getIdCard() +"','"+stu.getExamCard() +"','"+stu.getStudentName() +"','"+stu.getLocaltion() +"',"+stu.getGrade()+")"; System.out.println(sql); //2.调用JDBCTools类的update(sql)方法执行插入操作。 JDBCTools.update(sql); }}
5.总结:根据1、2、3判断,正常情况下,是可以对数据库进行添加数据的,但是添加的数据,通过查看数据库值为0或为空,
后来从程序的逻辑关系上进行检查分析,发现public void addStudent(Student stu)中Student student=new Student();是影响插入值的原因。
后来将在该方法中创建对象的语句去掉,利用形参写sql语句,结果正常了。属于对象重新被创建而引起的为空的现象。