Ошибка синтаксиса SQL Обнаружена "\ ', \'"

Это мой вывод на консоль:

`[10, name, N, 11-11, Address, 12, City, XX, 123-123-123, 321-321-321, maaaail]
INSERT INTO CUSTOMER (CUSTOMER_ID, NAME, ZIP, ADDRESSLINE1, ADDRESSLINE2, CITY, STATE, PHONE, FAX, EMAIL) VALUES (10','name','11-11','Address','12','City','XX','123-123-123','321-321-321','maaaail)
java.sql.SQLSyntaxErrorException: Syntax error: Encountered "\',\'" at line 1, column 117.`

И это мой код:

System.out.println(Arrays.toString(dane));
sql = "INSERT INTO CUSTOMER (CUSTOMER_ID, NAME, ZIP, ADDRESSLINE1, ADDRESSLINE2, CITY, STATE, PHONE, FAX, "
        + "EMAIL) VALUES (" + dane[0] + "','" + dane[1] + "','" + dane[3] + "','" + dane[4] + "','"
        + dane[5] + "','" + dane[6] + "','" + dane[7] + "','" + dane[8] + "','" + dane[9] + "','" + dane[10] + ")";
System.out.println(sql);

вам не хватает цитаты в конце '" + dane[10] + "'), но не используйте этот способ. Вместо этого узнайте о Подготовленное заявление, чтобы избежать синтаксических ошибок и SQL-инъекций.

YCF_L 29.05.2018 20:02

^^ подробнее: bobby-tables.com

T.J. Crowder 29.05.2018 20:03

Также в начале значений отсутствует цитата.

Turamarth 29.05.2018 20:03

Да, этот код уязвим для SQL-инъекция - вы никогда не должны использовать конкатенацию строк для операторов SQL (в производственном коде)

Blorgbeard 29.05.2018 20:04

Вы пропустили много цитат. Я предлагаю вам использовать форматированную строку, построитель строк или построитель SQL для создания вашего запроса.

user3555216 29.05.2018 20:04

Что, если какие-либо из ваших строковых значений сами по себе содержат одинарные кавычки? Не обрабатывайте значения запроса как исполняемый код, обрабатывайте их как значения. Используйте подготовленные операторы с параметрами запроса. Это более безопасно, чище, проще в обслуживании, быстрее и с меньшим количеством ошибок.

David 29.05.2018 20:04

Вам также не хватает цитаты в начале (" + dane[0] + "','" +. И я полностью поддерживаю рекомендацию @YCF_L о том, чтобы вы использовали привязку операторов, а не просто добавляли необработанные значения. Вы широко открыты для инъекционной атаки.

Ted Hopp 29.05.2018 20:04

Для этого существует имеет как канонический дупетаргет. Я использовал Вот этот, но он точно не лучший из имеющихся. Существует так много...

T.J. Crowder 29.05.2018 20:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
8
130
0

Другие вопросы по теме