Oracle之 PLSQL使用
-
首先登录system用户,其他的用户登录创建的时候会出现权限不够的问题
-
PLSQL结构分析
-
创建用户
第一步:
第二步:
设置角色权限
-
建表
第一步:
第二步:指定列名字和类型
-
代码编写(Oracle数据库)
参考文章:https://blog.csdn.net/weixin_42126427/article/details/106612475(Qsqlite数据库)连接数据库的 QSqlDatabase db = QSqlDatabase::addDatabase("QOCI");//QOCI db.setPort(1521); db.setHostName("127.0.0.1"); db.setDatabaseName("ORCL"); db.setUserName("GJ"); db.setPassword("123456"); if (!db.open()) { qDebug() << db.lastError().text(); } else { QMessageBox::warning(this,QString::fromLocal8Bit("提示"),QString::fromLocal8Bit("连接成功")); }
添加记录 tabModel->insertRow(tabModel->rowCount(),QModelIndex()); //在末尾添加一个记录 QModelIndex curIndex=tabModel->index(tabModel->rowCount()-1,1);//创建最后一行的ModelIndex theSelection->clearSelection();//清空选择项 theSelection->setCurrentIndex(curIndex,QItemSelectionModel::Select);
显示表信息,绑定外键 QTextCodec *codec= QTextCodec::codecForName("GBK"); tabModel=new QSqlRelationalTableModel(this,DB); tabModel->setTable("STUDINFO"); //设置数据表 qDebug() << tabModel->lastError().text(); tabModel->setEditStrategy(QSqlTableModel::OnManualSubmit); //OnManualSubmit , OnRowChange tabModel->setSort(0,Qt::AscendingOrder); //排序 tabModel->setHeaderData(0,Qt::Horizontal, codec->toUnicode("学号")); tabModel->setHeaderData(1,Qt::Horizontal, codec->toUnicode("姓名")); tabModel->setHeaderData(2,Qt::Horizontal, codec->toUnicode("性别")); tabModel->setHeaderData(3,Qt::Horizontal, codec->toUnicode("学院")); tabModel->setHeaderData(4,Qt::Horizontal, codec->toUnicode("专业")); //设置代码字段的查询关系数据表 tabModel->setRelation(3,QSqlRelation("DEPARTMENTS","DEPARTID","DEPARTMENT")); //学院 tabModel->setRelation(4,QSqlRelation("MAJORS","MAJORID","MAJOR"));//专业 theSelection=new QItemSelectionModel(tabModel); connect(theSelection,SIGNAL(currentChanged(QModelIndex,QModelIndex)), this,SLOT(on_currentChanged(QModelIndex,QModelIndex))); ui->tableView->setModel(tabModel); ui->tableView->setSelectionModel(theSelection); ui->tableView->setItemDelegate(new QSqlRelationalDelegate(ui->tableView)); //为关系型字段设置缺省代理组件 bool mmm = tabModel->select(); //打开数据表 qDebug() << tabModel->lastError().text();
删除记录 tabModel->removeRow(theSelection->currentIndex().row()); tabModel->submitAll(); //立即更新
-
效果展示
……
PS:遇到的问题
“ORA-00904: “RELTBLAL_3”.“DEPARTMENT”: 标识符无效\nUnable to execute statement”
问题所在是自己建表的时候把列名字写错了!
代码中可以通过,qDebug打印出来的进行查看错误,或者通过监听返回的值,来判断是否成功!