qt中的sql能读取对方的oarcle数据库信息吗

发布网友 发布时间:2022-04-28 10:37

我来回答

3个回答

热心网友 时间:2022-04-09 14:55

  QT SQL 变量值 条件查询 插入数据
  (本文只是总结网络上的教程)
  在操作数据库时
  SQL语句中难免会用到变量
  比如
  在条件值已知的情况下
  INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)SELECT * FROM Persons WHERE FirstName='Bush'
  在条件值是变量的情况下
  INSERT INTO table_name (列1, 列2,...) VALUES (变量1, 变量2,....)SELECT * FROM Persons WHERE FirstName='变量'
  或者SELECT * FROM Persons WHERE 变量='变量'
  方法据我所知有两种
  1:用query的绑定特性来做
  2:利用字符串特性,来组合SQL字符串(+,&,arg())详情可参考qstring,string用法(提示:qstring在执行sql语句时相当有用,当深入研究之http://developer.qt.nokia.com/doc/qt-4.8/qstring.htmlhttp://www.kuqin.com/qtdocument/qstring.htmlhttp://caterpillar.onlyfun.net/Gossip/Qt4Gossip/QString.htmlhttp://ibeyond.blog.51cto.com/1988404/373948百度文库也有个很好的官方ppt 讲的QT 数据类型 也可以参考之)
  第一步:
  简单介绍下qstring常用操作
  1-----------------组合1-----
  把str添加到字符串中并且返回结果的引用。
  string = "Test";
  string.append( "ing" ); // string == "Testing"等于operator+=()。
  2-------------------组合2-------
  QString firstName( "Joe" );
  QString lastName( "Bloggs" );
  QString fullName;
  fullName = QString( "First name is '%1', last name is '%2'" ).arg( firstName )
  .arg( lastName );
  // fullName == First name is 'Joe', last name is 'Bloggs'
  QString str;
  str = QString( "Decimal 63 is %1 in hexadecimal" ).arg( 63, 0, 16 );
  // str == "Decimal 63 is 3fin hexadecimal"3------------------组合3--------+,+=
  QString str = "1234";
  cout << &str << endl;
  str += str;
  cout << qPrintable(str) <<endl;
  str = str + "5678";
  cout << qPrintable(str) <<endl;
  4----------------检测是否为空
  QString a( "" );
  a.isEmpty(); // 真
  a.isNull(); // 假
  QString b;
  b.isEmpty(); // 真
  b.isNull(); // 真
  如果它不是零字符串,返回真,否则返回假。
  QString name =getName();
  if ( !name )
  name = "Rodney";
  5------------------转换
  int 转 QString
  int a=10;
  QString b;
  b=QString::number(a)
  QString 转int
  QString a="120"
  int b;
  b=a.toInt()
  第二步:
  回顾一下QT下操作,显示数据库的方法
  底层数据库:SQLITE,MYSQL,MSSQL,ACCESS,ORACLE…….
  中间层处理:QUERY,QUERYMODEL,TABLEMODEL,RetinoalTABLEMODEL顶层显示:DEBUG(MSGBOX),TABLEVIEW,TREEVIEW,TABLEWIDGET,COMBOX第三步:
  下面总结下在不同中间层的情况下,待变量SQL语句的执行方法这里只介绍查询和插入的方法,关於更新方法类似1----------------------使用query做中间层
  SQL查询:
  SQL插入:
  2----------------------使用querymodel做中间层查询:
  插入:
  3----------------------使用tablemodel做中间层查询:
  插入:
  4----------------------使用T-tablemodel做中间层查询:
  插入:
  1----------------------使用query做中间层(绑定或组合SQL字符串)SQL查询:(主要是用的绑定,其他*方法可查询帮助文档,或者参考插入的sql语句格式)QSqlQuery query;
  query.prepare("select name from student where id = ?");int id = ui->linetext->value(); //从界面获取id的值query.addBindValue(id); //将id值进行绑定
  query.exec();
  SQL插入:
  (ODBC)
  QSqlQuery query;
  query.prepare("insert into student (id, name) values (:id, :name)");query.bindValue(0, 5);
  query.bindValue(1, "sixth");
  query.exec();
  或者用名称进行索引
  query.prepare("insert into student (id, name) values (:id, :name)");query.bindValue(":id", 5);
  query.bindValue(":name", "sixth");
  query.exec();
  (ORACLE)
  query.prepare("insert into student (id, name) values (?, ?)");query.bindValue(0, 5);
  query.bindValue(1, "sixth");
  query.exec();
  或者省去索引
  query.prepare("insert into student (id, name) values (?, ?)");query.addBindValue(5);
  query.addBindValue("sixth");
  query.exec();
  批量插入:
  QSqlQuery q;
  q.prepare(“insert into student values (?, ?)”);QVariantList ints; ints << 10 << 11 << 12 << 13;q.addBindValue(ints);
  QVariantList names; names << “xiaoming” << “xiaoliang” << “xiaogang” <<QVariant(QVariant::String); //最后一个是空字符串,应与前面的格式相同q.addBindValue(names);
  if (!q.execBatch()) //进行批处理,如果出错就输出错误qDebug() << q.lastError();
  2----------------------使用querymodel做中间层(组合SQL字符串法可参考3)QString name = userNameLine->text();
  QString passwd = userPwdLine->text();
  QString sql = "select name, password from users where name = '"+ name + "'and password ='" + passwd + "'";查询:
  QSqlQueryModel *model = new QSqlQueryModel;model->setQuery(“select * from student”);插入:
  3----------------------使用tablemodel做中间层(组合sql字符串法)QString name = userNameLine->text();
  QString passwd = userPwdLine->text();
  QString sql = "select name, password from users where name = '"+ name + "'and password ='" + passwd + "'";查询
  QSqlTableModel *model = new QSqlTableModel;model->setTable("employee");
  model->setEditStrategy(QSqlTableModel::OnManualSubmit);model->select();
  model->removeColumn(0); // don't show the IDmodel->setHeaderData(0, Qt::Horizontal, tr("Name"));model->setHeaderData(1, Qt::Horizontal, tr("Salary"));QTableView *view = new QTableView;
  view->setModel(model);
  view->show();
  条件查询:
  QString name = ui->lineEdit->text();
  model->setFilter(QObject::tr(“name = ‘%1′”).arg(name)); //根据姓名进行筛选model->select(); //显示结果
  分类
  model->setSort(0,Qt::DescendingOrder);
  model->select();
  插入:
  int rowNum = model->rowCount(); //获得表的行数int id = 10; model->insertRow(rowNum); //添加一行model->setData(model->index(rowNum,0),id);4----------------------使用Relationaltablemodel做中间层(组合SQL字符串法)查询:
  插入:

热心网友 时间:2022-04-09 16:13

能否获取到数据库信息要看你使用的数据库帐号是否有权限DBA权限的。楼上的回答我是没看懂。
数据库信息大多都可以从系统视图里查询出来,但是查询这些信息首先你要保证你的帐号有管理员权限。
SQL网上有,自己去找,不知道你要什么信息这里就不多说了,这个跟你用什么工具没有关系,用不用qt都能查的到

热心网友 时间:2022-04-09 17:48

厉害了 我之前也学程序的phpjav啥的 后来太难没血了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com