利用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语句,结果正常了。属于对象重新被创建而引起的为空的现象。