用java向mysql数据库中插入数据为空

时间:2024-03-05 18:52:52

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