Here is my code:
SET SEARCH_PATH TO work
/* Task 1 */
INSERT INTO Category (CategoryID, Name, CategoryType)
VALUES(1,'English','fiction');
and here is the error:
ERROR: syntax error at or near "INSERT"
LINE 4: INSERT INTO Category (CategoryID,Name,CategoryType)
^
********** Error **********
ERROR: syntax error at or near "INSERT"
SQL state: 42601
Character: 45
![]()
asked Apr 26, 2016 at 21:14
3
You need a semi-colon at the end of the SET statement:
SET SEARCH_PATH TO work;
answered Mar 9, 2017 at 18:43
Try to just do an insert into that is schema qualified:
INSERT INTO work.Category (CategoryID, Name, CategoryType)
VALUES(1,'English','fiction');
Or
SET SEARCH_PATH TO work;
/* Task 1 */
INSERT INTO Category (CategoryID, Name, CategoryType)
VALUES(1,'English','fiction');
Either should fix the error.
answered Apr 26, 2016 at 21:33
Berra2kBerra2k
3182 gold badges5 silver badges14 bronze badges
Проблема даже совсем непонятная. Вроде все правильно но выдает ошибку: Ошибка синтаксиса в инструкции INSERT INTO.
(База на MS Access)
OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password='';Data Source=myFirma.mdb");
OleDbCommand myData = new OleDbCommand("select * from Users", myConnection);
OleDbCommand myQuery = new OleDbCommand("insert into Users (name,surname,login,password,action)values('" + textBox1.Text + "', '" + textBox2.Text + "', '" + textBox3.Text + "', '" + textBox4.Text + "', '" + textBox5.Text + "')",myConnection);
myConnection.Open();
myQuery.ExecuteNonQuery();
myConnection.Close();
Попробовал другой вариант:
String myConn = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=myDataBase.mdb;";
String myQuery = "INSERT INTO Users ( name, surname, login, password, action) VALUES ('" + textBox1.Text + "', '" + textBox2.Text + "', '" + textBox3.Text + "', '" + textBox4.Text + "', '" + textBox5.Text + "')";
OleDbConnection cn = new OleDbConnection(myConn);
cn.Open();
OleDbCommand cmd = new OleDbCommand(myQuery, cn);
cmd.ExecuteNonQuery();
cn.Close();
Кроме этих пробовал еще варианты, обыскал весь Гугл, ниче не помогло. Все время одна и та же ошибка на одной и той же строчке:
.ExecuteNonQuery();
Ошибка: Ошибка синтаксиса в инструкции INSERT INTO.
Последняя надежна на вас.
-
Перемещено
1 октября 2010 г. 22:40
MSDN Forums consolidation (От:Visual C#)
This might be a little silly, but can’t figure out why this insert is not working, I did surround the IP with single / double quotes!
psql -U dbuser hosts -h dbhost -c 'INSERT INTO HOSTS ('type','name') VALUES ('"test"', '"10.100.133.1"')'
Password for user dbusr:
ERROR: syntax error at or near ".133"
LINE 1: INSERT INTO HOSTS (type,name) VALUES (test, 10.100.133.1)
^
Do I need to escape anything?
asked Oct 24, 2016 at 7:34
![]()
2
This works fine:
postgres=# create table hosts ( type varchar(20), name varchar(20));
CREATE TABLE
postgres=# q
postgres@ironforge:~$ psql -c "insert into hosts (type,name) values ('test','10.100.133.1')"
INSERT 0 1
postgres@ironforge:~$
answered Oct 24, 2016 at 8:00
![]()
PhilᵀᴹPhilᵀᴹ
31.3k9 gold badges80 silver badges107 bronze badges
1
A couple of notes.
- you never have to quote columns names (identifiers) and you never should quote them where it isn’t required.
- create the table with them unquoted
- never quote them in your queries
- you can always use
$$ DOLLAR QUOTED STRING LITERALSto get around shell quoting escaping.
So this should work,
psql -c 'INSERT INTO HOSTS (type,name) VALUES ($$test$$, $$10.100.133.1$$)'
answered Nov 23, 2016 at 18:21
Evan CarrollEvan Carroll
58.9k42 gold badges216 silver badges442 bronze badges
3
|
seneka 7 / 7 / 2 Регистрация: 28.09.2012 Сообщений: 82 |
||||||||
|
1 |
||||||||
|
10.10.2012, 09:17. Показов 13325. Ответов 1 Метки нет (Все метки)
Здравствуйте!!!
Добавлено через 33 минуты
__________________
1 |
|
9 / 9 / 5 Регистрация: 08.10.2012 Сообщений: 48 |
|
|
10.10.2012, 17:13 |
2 |
|
У тебя в значениях было @Dat e , а в параметры добавил как @Dat a
0 |
Вот пример из документации
QSqlQuery query; query.prepare("INSERT INTO person (id, forename, surname) " "VALUES (:id, :forename, :surname)"); query.bindValue(":id", 1001); query.bindValue(":forename", "Bart"); query.bindValue(":surname", "Simpson"); query.exec();Если вы пытаетесь сделать bind, то вам нужно правильно сформировать строку запроса, плюс указать bind привязки.
В данном случае наличие кавычек уже не нужно будет.
bool DataBase::inserIntoTable(const QVariantList &data) { QSqlQuery query; query.prepare("INSERT INTO public.NameTable (FirstName, SurName, Nik) VALUES (:db, 'cc', 'bb');"); query.bindValue(":db", data[0].toString()); if(!query.exec()){ qDebug() << "error insert into " << TABLE; qDebug() << query.lastQuery(); qDebug() << query.lastError().text(); return false; } else { return true; } return false; }В статье, по которой вы это делаете были макросы, поэтому для конкатенации строк нужно было делать разделение кавычками. А вы очевидно формируете запрос сразу без макросов.
