bool database::createDatabase()
{
QSqlQuery query // 此处请查询 query的相关 *** 作
qDebug() <<"Start to create table..."
//create table: User
query.exec("CREATE TABLE [User] ( [userId] VARCHAR(40) NOT NULL, [username] VARCHAR(40) NOT NULL, [email] VARCHAR(40), [password] VARCHAR(40), [city] VARCHAR(20), PRIMARY KEY([userId]) )")// 一定注意不要拼写错误,引号内是不提示拼写错误的。
//create table: Connect
query.exec("CREATE TABLE [Connect] ( [LeftUser] VARCHAR(40) NOT NULL, [RightUser] VARCHAR(40) NOT NULL, [relation] INTEGER DEFAULT '0' NULL, PRIMARY KEY ([LeftUser], [RightUser]))")
if (query.lastError().isValid())
{
qDebug() <<query.lastError()
return false
}
else
{
qDebug() <<"Create database successfully."
}
return true
}
插入 *** 作
bool database::adduser( User user )
{
if (!db.isOpen())
{
createconnection()
}
QSqlQuery query
qDebug() <<"start to insert data"
query.exec("INSERT INTO [User] ( userId, username, email, password, city) VALUES(?,?,?,?,?)")
QVariantList userId
userId <<user.getUserId()
query.addBindValue(userId)
QVariantList username
username <<user.getUserName()
query.addBindValue(username)
QVariantList email
email <<user.getEmail()
query.addBindValue(email)
QVariantList password
password <<user.getPassword()
query.addBindValue(password)
QVariantList city
city <<user.getCity()
query.addBindValue(city)
try
{
if (!query.execBatch())
{
qDebug() <<query.lastQuery()
qDebug() <<query.lastError()
return NULL
}
}
catch(...)
{
QMessageBox::critical(0, "Add New Node error!",
"Unable to add a new Node!/n/n"
"Click Cancel to exit.", QMessageBox::Cancel)
}
if( !UpdateConnectTable(user.getUserId(),user.getUserId(),2))
{
QMessageBox::critical(0,"","Update table Connect error")
return NULL
}
return true
}
vs2015支持c++开发跨平台的库,这样对于Qt而言会有多大的冲击呢?将来用VS开发c++跨平台和QT开发跨平台应用发展趋势各是怎样的?如果现在新项目要开
发跨平台的高性能应用,如果用c++是选择QT还是VS2015的跨平台特性呢?另外VS2015跨平台对于界面的支持如何?
注
意:不是在讨论IDE,也不是在讨论.net的跨平台!而是VS支持c++跨平台的特性。既然要跨平台,对于与系统无关的库显然是用标准c++。而涉及到
与系统相关的API的封装,VS2015(姑且就用IDE来代称)会向Qt一样去封装成统一的API吗?或者说会去走Qt的路吗?
各抒己见:
VS 2015 是个庞然大物,有多大呢?大家可以去它的下载页围观一下:Visual Studio 2015 CTPs
但细到楼主的这个问题,其实 VS 的跨平台特性的重点还是手机 app 的开发,而且只是在一个 IDE 里开发。而不是一份代码跨多个平台。至少从 Build cross-platform apps with Visual C++ 这篇文档我是这么理解的。我没有时间做的更细。如果题主了解 Qt 手机应用的开发,再下载一下 VS 2015 做个测评,就完全可以得出一个简单的结论,根本不用提问。微软的这个特性,野心很大,希望是能一举拿下 iOS 和 Android 平台手机应用的开发。
不过我连这个也不看好。但我的原因很主观:
经过了这
么多年的发展,软件开发行业已经完全渗入了整个社会。当年的那种,比如说五笔吧,一个软件只要是用电脑的都会用到,这种可能性已经非常小了。一个软件解决
方案的针对性是非常强的。而它的应用场景的复杂已经远远超过一般人的想象。想打造一套方案,或者时髦一点,生态环境,拿下整个市场,从HPC集群到PC再
到手机,甚至路由这样的嵌入式设备?面对这个想法,我只能呵呵了。而微软就觉得这是可行的。更简单地说,在前所未有的细分下,针对一个特定的任务,从开发
环境,工具链,到所选择的语言都会非常地不同,这不是一个 VS 就可以满足的。
以上是我个人觉得 VS 2015 实在是托大的理由。下面说说我对 Qt 的认识。
Qt
最早是用来实现 UI 的跨平台库,最早如果你先在 Unix 实现了一个程序,然后想移植到 Windows 上,那是要买 License
才行的,这也是早期 Qt 的主要收入来源。之后 Qt 逐渐移植到了苹果上,后来被诺记收了又可以在 S60 上跑。再后来被诺记卖了,于是支持
Android 。尽管最近的金主都是在希望 Qt 可以跑手机。但 Qt 最大的用户在 KDE 上,由于它是 Linux 甚至整个类 Unix
上环境不多的可用的 GUI 程序开发框架和环境,至少一大半跑在 Unix-like 下的 GUI 程序都会用到 Qt (另外一半是 Gnome,
还有一点点是其它,……)。这部分开发者才是 Qt 整个社区的基石,而他们尽管在产品的理念上会跟风微软和苹果,但他们是不会在短时间内转向 VS
的,更长时间看也不会。
当然
Qt 最近有点火,不光是国内,根据我的见识,那是因为做特定的嵌入式开发的缘故,做手机应用开发有,但并不算常见。所以, VS
就算在手机应用开发上火起来,对于 Qt 来说仍不是什么大不了的事情。只是在短期内损失一批潜在的贡献者而已。当然,上面可以看出,我对 VS
这玩意可以成功也持保留意见。
所以简单地说, VS 2015 这东西目前跟 Qt 风马牛不相及,自然也没什么冲击可言。
最后补充一下:
我觉得题
主的这个提问没有提到点子上。因为 VS 说到底还是 IDE ,而 Qt 是开发框架。两者没有什么可比性。如果仅仅针对这个跨平台的特性而言。 VS
的这个方案跟没法与 Qt 相提并论,尽管我也不看好 Qt 程序的跨平台,所以 VS 2015 的这个特性根本就没有什么亮点可言。
更进一步
推,题主的提问,可能只是初学者,想选一个简单的跨平台的开发环境做学习之用。我觉得还是 Qt 吧。原因很简单, Qt 环境比 VS
小得多,目标也确定的多。如果想赚钱,请直接去投苹果。 当然安卓也是一个选项。 VS
看上去嘛都有,什么都可以干,但是用上了,我估计会有种,这玩意怎么做嘛嘛不行的感觉。如果题主是重度 VS 使用者的话另说。
先说下个人观点,我不看好Qt。
“相对客观”的说:
1)Qt 在iOS和Android的UI支持上只能算是一般,和原生UI相差甚远,对平台新版本的新特性支持薄弱。VS对这方面的支持,基于乔布斯的评语“微软太缺乏审美能力”,我也表示完全不看好。
2)业务层用Qt的库相比个家公司自己用原生的C艹库差别还有的。除非是哪家公司用Qt做了基础库,这是例外。基于VS的iOS、Android支持的编译器是gcc和clang,WinRT是MSVC,这部分和Qt都是一致的。
3)Qt
的反射封装或者是Meta系统封装很重,至少要超过了c艹标准的rtti。虽然这套系统适合用来开发UI,但是作为业务层,如此重的外壳,用Qt就失去了
一部分用java、objective c
迁移到C艹的性能优势。VS里面由于编译链的限制,而且基于llvm的coreclr支持还是幼儿期,几乎不用考虑c#的可能性。
4)最近几个月都在观察QtBug 列表,上面用户Qt对iOS、Android吐槽不断,小Bug层出不穷,甚至有的会影响正常启动。对WinRT的支持更不给力。VS对WinRT支持肯定会是Native的,至于其他两个平台,得靠自己维护了。
5)Retina
支持。除了Mac平台支持稳定,其他平台只是承诺要增加支持。那个Improve Retina
支持的帖子是去年发的,今年年初发布的Qt5.4也只是完善了Mac部分和加入实验性质的Windows、Linux支持。等到完美加入这部分支持,又是
何年何月?
6)Qt
对移动端的投入究竟能有几斤几两?首先说一个不相干的话题是,Qt对桌面跨平台的支持可谓是筋疲力竭:对Windows
8/8.1的2xDPI显示支持(HIDPI),还需要手动设置环境变量外加程序内启动选项选项才能开启,不然用Qt原始方式实现的界面都是变形扭曲
的;Mac的StatusBar 中用设置了template的NSImage
何年才能有;Linux在从Qt5.1就regression消失的TrayIcon也是时隔三个大版本到即将发布的Qt
5.4.2才有修复。其6个月的漫长的开发周期,庞大而臃肿的库,面对对更新迭代更疯狂的移动端,Qt的表现是Qt缺乏有对iOS、Android的相关
支持,运行时家常便饭的各色crash,对WinRT的支持我认为这更象是一个hacker的项目。VS只有等VS2015才能评论。
7)我认
为跨平台的C艹支持最显著的收益,是UI层封装一次跨平台的组件还是业务层的代码复用和性能优化?同1)3)6)中讨论,我个人认为Qt
UI层的剥离平台相关的开发纯属扯淡,跨平台对C艹开放最大的收益还是复用高质量的基础库和核心业务代码带来的性能优势和项目维护优势。
8)Qt
的Mobile开发支持,本身的开发工具是平台相关的,就是说Qt不能在Windows下开发iOS和Android,Qt也不能在Linux下开发
iOS。相比Windows下VS2015
带来CrossMobilePlatform支持,开发机器只要是Windows就可以。这点上Qt编译链技术完败。
总而言之,跨平台的移动端开发的看点会是在业务层的开发上,UI层不应该是跨平台移动端开发争夺的重点。至于是VS 还是Qt,看官自己决定吧。
1. Qt SDK现在最新版本为5.4,按照官方说法,其LGPL协议下,提供以下目标平台的二进制开发包:
Windows Desktop x86/64
Windows Store App
Windows Phone 8.1
Android arm5/7
Android x86
MacOS
iOS
如果在GPL协议下或者之前老版本的Qt,可以支持塞班、黑莓、各种嵌入式开发板等平台。Qt支持的目标平台肯定还是比VS2015多的。
2. Qt不仅仅是一个c++界面库,它在实现了一套基于C++的反射功能的基础上,包含了网络、数据库、多媒体、测试框架、国际化工具、打包部署模块等,甚至还自己封装了一个WebKit模块。此外,Qt有收费才能使用的模块:
Qt Purchasing
Qt Charts
Qt Virtual Keyboard
Qt Data Visualization
现在,除了这些传统客户端开发工具以外,Qt也推出了云服务QtCloudServices。当然现在可能有变化。
3. 由于平台众多,Qt传统的基于QWidget界面在适配各种不同DPI的屏幕时,设计风格、控件及字体、图标大小等方面是会存在问题的,Qt5.4版本开始,官方宣称解决了DPI的问题:
High-DPI support for Windows and OS X
当然
Qt5.4版本以前(包括现在),Qt官方希望大家使用QtQuick(QML,一种基于JavaScript的语言。c++与QML的关系,有点像C#
与WPF一样)来解决触屏和DPI的问题,使用QML开发的话,在各个目标平台显示效果都是一样的,并且能够很方便的与C++代码交互。当然,与.Net
的WPF比起来,还差很远,但毕竟跨的平台比WPF多。Qt官方有一个用来显示股市信息的QML Demo(http://doc.qt.io/qt-5/qtquick-demos-stocqt-example.html),在Win8、Android、WP上面显示效果都非常好。
4. QtCreator这个IDE与Qt配合起来非常完美,在VS里面使用Qt总感觉怪怪的。如果不使用Qt,由于C++语法过于复杂,VS这种宇宙级的IDE也不能像c#那样来IntelliSense C++,但无论如何还是要强于Qt Creator的。
5.
VS2015中C++的跨平台,肯定不会是一次编写处处运行(除非写的是标准C++)。如果带有界面(Win的MFC、WTL,Linux的X11)、或
者有用到POSIX、WIN API,怎么可能不修改代码直接跨平台?而Qt有自己的一套GUI、Networks等框架,如果严格使用Qt
SDK的标准来开发,完全可以不修改代码,在各个平台编译就行。
前提是在同一个局域网,或者网络IP可以互相ping通1、本地创建ORACLE监听2、防火墙开通端口3、远程安装ORACLE客户端,根据服务端的数据库名称、IP地址、端口配置TNS连接欢迎分享,转载请注明来源:内存溢出
评论列表(0条)