我电脑是Windows64+oracle11R+DM8+Qt5.12的组合,后续会部署在麒麟V4下,持续更新。
1环境安装
所有数据库默认的账户“SYSTEM”"SYS"等,密码可重置、可再输入一遍避免后续登录不上。
1.1安装oracle11R
提取码: f7iz
提示:本机使用,仅需下载win64_11gR2_database_1of2.zip、win64_11gR2_database_2of2.zip后合并解压成database文件夹,执行setup.exe安装即可,若服务器与客户端分离,需在客户端上下载win64_11gR2_client.zip进行解压安装。
1.2安装DM8
参考官网教程:官网说明
提取码: 7axh
安装DM可以勾选两个示例库,就可以直接使用该表数据,安装无key直接跳过就行。
1.3DM服务配置
补充做了个这个操作:
2.数据准备
2.1oracle数据准备
2.2DM数据准备
2.2.1创建表空间
提示:添加表空间文件时,不是先建立xx.dbf文件,而是在选择的最后的文件夹下,在对话框中输入文件名称,确定后会自动建立该文件。
2.2.2创建用户
可在次步关联用户和表空间:
也可参考这边文章,但缺少了一些截图:
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.youkuaiyun.com/qq_27866305/article/details/107047773
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.youkuaiyun.com/qq_27866305/article/details/107047773
1)创建表是在模式->用户名->表右键“新建表”进行的;
2)表操作(插入、更新、选择)是在1)表下右键->生成SQL脚本进行的。
2.2.3操作错误排查
3.oracle转DM
因需要,将现有oracle转为DM数据,参考:
4.qt使用
.pro
QT += core gui
QT += sql
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++11
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtSql>
#include <QDebug>
#include <QSqlDatabase>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setHostName("localhost");
db.setPort(5236);
db.setDatabaseName("DM");
db.setUserName("SYSDBA");
db.setPassword("SYSDBA");
if (db.open())
ui->label_2->setText("connect ok!");
else
{
qDebug()<<db.lastError();
ui->label_2->setText("connect fail! " + db.lastError().text());
}
QSqlQuery query;
//清空表,初始化测试环境
QString strsql = "delete from TEST.PERSON";
if(query.exec(strsql)){
qDebug()<<"Init ok";
}
/*insert into "TEST"."PERSON"("PERSONID", "NAME", "SEX", "EMAIL", "PHONE") VALUES('10','Lily','F','ee','123');
insert into "TEST"."PERSON"("PERSONID", "NAME", "SEX", "EMAIL", "PHONE") VALUES('11','Sue','F','ee','123');
insert into "TEST"."PERSON"("PERSONID", "NAME", "SEX", "EMAIL", "PHONE") VALUES('12','Jane','M','ee','123');
SELECT * FROM "TEST"."PERSON";*/
//1.插入数据
// strsql = "insert into TEST.PERSON(PERSONID, NAME, SEX, EMAIL, PHONE) VALUES('13','Lily','F','ee','123');";
// if (query.exec(strsql))
// {
// qDebug() << "insert ok!";
// }
// else
// {
// qDebug() << "insert fail! " << query.lastError().text();
// getchar();
// exit(-1);
// }
//2.更新数据
// strsql = "update TEST.PERSON set NAME='Sue' where PERSONID=11;";
// if (query.exec(strsql))
// {
// qDebug() << "update ok!";
// }
// else
// {
// qDebug() << "update fail! " << query.lastError().text();
// getchar();
// exit(-1);
// }
//3.删除数据
// strsql = "delete from TEST.PERSON where PERSONID=14;";
// if (query.exec(strsql))
// {
// qDebug() << "delete ok!";
// }
// else
// {
// qDebug() << "delete fail! " << query.lastError().text();
// getchar();
// exit(-1);
// }
//4.查询数据
strsql = "select PERSONID from TEST.PERSON";
if (query.exec(strsql))
{
qDebug() << "select ok!";
}
else
{
qDebug() << "select fail! " << query.lastError().text();
getchar();
exit(-1);
}
while (query.next())
{
qDebug() << query.value(0).toString();
}
query.clear();
}
MainWindow::~MainWindow()
{
delete ui;
}