Я пытаюсь отправить переменную (из QML) с помощью функции C++ обратно в базу данных SQL, я получил функцию SELECT sql, но каждый раз, когда я пытаюсь вставить, я получил эту ошибку: QODBCResult: : exec: Не удалось выполнить оператор: «[Microsoft] [драйвер SQL Server ODBC] [SQL Server] Невозможно вставить значение NULL в идентификатор столбца, таблицу« Employees.dbo.Employeetable », столбец не допускает нулей. INSERT не работает . [Microsoft] [Драйвер SQL-сервера ODBC] [SQL Server] Оператор завершен. " Правильный синтаксис, теперь работающий, если кому-то это понадобится для справки.SQL INSERT INTO query C++
Вот мой код:
QString servername, dbname;
//instatiating qstring variables as value of lineEdit
//declaring new sql database object
QSqlDatabase *db = new QSqlDatabase(QSqlDatabase::addDatabase("QODBC"));
//setting q string variables to name of server and database
servername = "********";
dbname = "Employees";
db->setConnectOptions();
//connecting to database, passing q string variables as arguments
QString dsn = QString("DRIVER={SQL Server};SERVER=%1;DATABASE=%2;Trusted_Connection=Yes;").arg(servername).arg(dbname);/** Build the connection string **/
//declaring database name
db->setDatabaseName(dsn);
//opening db
if(db->open())
{
qDebug() << "**Successfully connected to database**";
QSqlQuery query;
query.prepare("insert into Employeetable(Firstname) values(:var);");
query.bindValue(":var", var);
if(!query.exec())
{
qFatal("Failed to add");
}
qDebug()<< "Insert Success";
}
Ваша переменная не имеет значения. В то время как ваша таблица имеет ограничение, чтобы не допускать значения NULL. Обращение с кем-либо из сторон решит проблему. – knkarthick24
@ knkarthick24 Это звучит как ответ. – cmannett85
Переменная устанавливается при нажатии кнопки на QML. –