java. sql .SQLSyntaxErrorException: ORA-00947: недостаточно значений - PullRequest
0 голосов
/ 01 мая 2020
System.out.println("Enter the code: ");
Code=input.next();                       
System.out.println("Enter the title: ");
Title=input.next();   
System.out.println("Enter the semster: ");
Semester=input.next(); 
System.out.println("Enter the year: ");
Year=input.next();           
System.out.println("Enter the grade: ");
Grade=input.next(); 

String insertStatement ="insert into Courses values('"+Code+"'+'"+Title+"'+'"+Semester+"'+'"+Year+"'+'"+Grade+"')";
System.out.println(insertStatement);
s.execute(insertStatement); 
continue;

Когда я вставляю значения и запускаю код, он показывает мне

insert into Courses values('GET'+'CS'+'Fall'+'2016'+'C+')

Ошибка

java.sql.SQLSyntaxErrorException: ORA-00947: not enough values

Может кто-нибудь объяснить мне? спасибо

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

Подготовьте запрос правильно, Ваши двойные кавычки перепутаны.

Вам нужно что-то вроде этого:

"insert into Courses values('"+Code+"'"+"'"+Title+"'"+"'"+Semester+"'"+"'"+Year+"'"+"'"+Grade+"')"

Но да, он склонен к SQL инъекции, поэтому лучше использовать PreparedStatement

0 голосов
/ 01 мая 2020

Обновите ваш оператор SQL, чтобы использовать имя столбца, например:

String insertStatement = "INSERT INTO Courses (codeColName, titleColName, semesterColName, yearColName, gradeColName)"
                + "VALUES ('" + code + "', '" + title + "', '" + semester + "', '" + year + "', '" + grade + "')";

, рекомендуется использовать PreparedStatement, чтобы избежать SQL Инъекция

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...