Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QSqlError(“错误”)_C++_Database_Qt_Sqlite - Fatal编程技术网

C++ QSqlError(“错误”)

C++ QSqlError(“错误”),c++,database,qt,sqlite,C++,Database,Qt,Sqlite,我想为我的客户机-服务器程序编写SQLite数据库。在数据库中,服务器应该保存来自客户端的每条消息。该表有3列:客户端IP、日期和消息。我编写了以下代码,但在insertmessage()中进行调试时,我遇到了以下错误:“QSqlError(“,”,“)”。 有什么问题吗?我应该有一些代码来连接服务器接收到的消息还是客户端IP和DB?非常感谢 bool MainWindow::createConnection() { QSqlDatabase database = QSqlDatabase::

我想为我的客户机-服务器程序编写SQLite数据库。在数据库中,服务器应该保存来自客户端的每条消息。该表有3列:客户端IP、日期和消息。我编写了以下代码,但在insertmessage()中进行调试时,我遇到了以下错误:“QSqlError(“,”,“)”。 有什么问题吗?我应该有一些代码来连接服务器接收到的消息还是客户端IP和DB?非常感谢

bool MainWindow::createConnection()
{

QSqlDatabase database = QSqlDatabase::addDatabase("QSQLITE");

database.setDatabaseName("Message.dat");

   if(!database.open())
   {
       qDebug()<<"can not open database";

       database.lastError().text();

       return false;
    }
   return true;
}

MainWindow::messagewindow()
{
     enum {
          messages_id = 0 ,
          messages_date =1 ,
          messages_HostAddreess = 2,
          messages_message = 3,
          };



      model = new QSqlTableModel(this);
     {
        model->setTable("messages");
        model->setHeaderData(messages_date, Qt::Horizontal, tr("Date"));
        model->setHeaderData(messages_HostAddreess, Qt::Horizontal, tr("From"));
        model->setHeaderData(messages_message, Qt::Horizontal, tr("Message"));
        model->select();

     }



     view = new QTableView;
     {
        view->setSelectionMode(QAbstractItemView::SingleSelection);
        view->setSelectionBehavior(QAbstractItemView::SelectRows);
        view->setColumnHidden(messages_id, true);
        view->setModel(model);
        view->resizeColumnsToContents();
        view->setEditTriggers(QAbstractItemView::NoEditTriggers);

        QHeaderView *header = view->horizontalHeader();
        header->setStretchLastSection(true);
     }

 }

 MainWindow::~MainWindow()
 {
  delete ui;
  }

void主窗口::createdata()
{
QSqlQuery查询;
exec(“删除表消息”);
exec(“创建表消息(”
id整数主键自动递增
主机地址varchar(20)
“日期varchar(10),”
“消息varchar(30))”;
}
void main window::insertMessage(QString HostAddrress、QDate currentDate、QString消息)
{
QSqlQuery查询;
查询.准备(“在消息中插入(主机地址、日期、消息)值(?、、?)”;
query.addBindValue(HostAddrress);
query.addBindValue(当前日期);
query.addBindValue(消息);
exec();
if(query.exec()){
//没有错误,请继续

qDebug()您不需要像上面评论的那样将数据库设置为类成员。 但当您创建QSqlQuery时,应该像这样在构造函数中设置数据库

QSqlQuery query(QSqlDatabase::database());

您不需要像上面评论的那样将数据库设为类成员。 但当您创建QSqlQuery时,应该像这样在构造函数中设置数据库

QSqlQuery query(QSqlDatabase::database());

QSQLDABASE database=QSQLDABASE::addDatabase(“QSQLITE”);
您的数据库应该是类成员,而不是超出范围的局部变量。@drescherjm:很抱歉,我是Qt和SQLite的新手。。您能解释更多吗?使数据库成为MainWindow类的类成员而不是MainWindow::createConnection()中的局部变量.我做到了..但仍然不起作用..
QSqlDatabase=QSqlDatabase::addDatabase(“QSQLITE”);
您的数据库应该是一个类成员,而不是超出范围的局部变量。@drescherjm:很抱歉,我是Qt和SQLite的新手。您能解释一下吗?让数据库成为MainWindow类的类成员,而不是MainWindow::createConnection()中的局部变量。我做到了。但它仍然不起作用。。。。
QSqlQuery query(QSqlDatabase::database());