本文章原创于www.yafeilinux.com 转载请注明出处。
接着上一篇教程。
二,在SQL语句中使用变量。
我们先看下面的一个例子,将“查询”按钮的槽函数更改如下:
void Widget::on_pushButton_clicked()
{
QSqlQuery query;
query.prepare(“insert into student (id, name) ”
“values (:id, :name)”);
query.bindValue(0, 5);
query.bindValue(1, “sixth”);
query.exec();
//下面输出最后一条记录
query.exec(“select * from student”);
query.last();
int id = query.value(0).toInt();
QString name = query.value(1).toString();
qDebug() << id << name;
}
运行效果如下:
可以看到,在student表的最后又添加了一条记录。在上 ......
修改列属性
alter table tablename modify(name ,varchar2(10)) 列宽度不得小于修改前的宽度
日志管理
视图 v$logfile
alter database add logfile 'd:\orcl01.log' size 10m;//添加组
alter database add logfile member 'd:\orcl02.log' to group 4;//向4组中添加成员
alter database drop logfile member 'd:\orcl02.log' ;//删除成员
parameter相关的参数 db_recovery_file_dest(归档位置和大小) log_archive_max_process log_archive_dest ......
修改列属性
alter table tablename modify(name ,varchar2(10)) 列宽度不得小于修改前的宽度
日志管理
视图 v$logfile
alter database add logfile 'd:\orcl01.log' size 10m;//添加组
alter database add logfile member 'd:\orcl02.log' to group 4;//向4组中添加成员
alter database drop logfile member 'd:\orcl02.log' ;//删除成员
parameter相关的参数 db_recovery_file_dest(归档位置和大小) log_archive_max_process log_archive_dest ......
添加、删除、修改使用
db.Execute(Sql)命令执行操作
╔----------------╗
☆ 数据记录筛选 ☆
╚----------------╝
注意:单双引号的用法可能有误(没有测式)
Sql = "Select
Distinct
字段名 from 数据表"
Distinct函数,查询数据库存表内不重复的记录
Sql = "Select Count(*) from 数据表 where
字段名1>#18:0:0# and 字段名1< #19:00# "
count函数,查询数库表内有多少条记录,“字段名1”是指同一字段
例:
set rs=conn.execute("select count(id) as idnum from news")
response.write rs("idnum")
sql="select * from 数据表 where 字段名 between 值1 and
值2"
Sql="select * from 数据表 where 字段名 between
#2003-8-10# and #2003-8-12#"
在日期类数值为2003-8-10 19:55:08
的字段里查找2003-8-10至2003-8-12的所有记录,而不管是几点几分。
select * from tb_name where datetime between #2003-8-10# and
#2003-8-12#
字段里面的数据格式为:2003-8-10
19:55:0 ......
添加、删除、修改使用
db.Execute(Sql)命令执行操作
╔----------------╗
☆ 数据记录筛选 ☆
╚----------------╝
注意:单双引号的用法可能有误(没有测式)
Sql = "Select
Distinct
字段名 from 数据表"
Distinct函数,查询数据库存表内不重复的记录
Sql = "Select Count(*) from 数据表 where
字段名1>#18:0:0# and 字段名1< #19:00# "
count函数,查询数库表内有多少条记录,“字段名1”是指同一字段
例:
set rs=conn.execute("select count(id) as idnum from news")
response.write rs("idnum")
sql="select * from 数据表 where 字段名 between 值1 and
值2"
Sql="select * from 数据表 where 字段名 between
#2003-8-10# and #2003-8-12#"
在日期类数值为2003-8-10 19:55:08
的字段里查找2003-8-10至2003-8-12的所有记录,而不管是几点几分。
select * from tb_name where datetime between #2003-8-10# and
#2003-8-12#
字段里面的数据格式为:2003-8-10
19:55:0 ......
--创建链接服务器
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 '
--查询示例
select * from ITSV.数据库名.dbo.表名
--导入示例
select * into 表 from ITSV.数据库名.dbo.表名
--以后不再使用时删除链接服务器
exec sp_dropserver 'ITSV ', 'droplogins '
--连接远程/局域网数据(openrowset/openquery/opendatasource)
--1、openrowset
--查询示例
select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
--生成本地表
select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
--把本地表导入远程表
insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
select *from 本地表
--更新本地表
update b
set b.列A=a.列A
from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b
on a.column1=b.column1
--openque ......
错误提示:
指定的连接类型“OLEDB”未被识别为有效的连接管理器类型。当试图创建未知连接类型的连接管理器时会返回此错误。请检查连接类型名称的拼写是否正确。
解决方法:
sqlserver2005-配置工具-SqlServer configuration manager-SqlServer2005服务-sqlserver Integration Services,右击-选择属性,然后把内置账户改为本地系统。等服务重启完之后,就正常了。 ......
连接查询,就是将
两个或多个
表或视图
通过一定的条件
将全部或部份字段
全部或部份记录
连接到一起,得到一个新的数据集合。
如:有人员档案和工资档案两个表,两个表有共同的关键字段XMDM(姓名代码),其中人员档案存储了人事资料,工资档案存储了薪酬资料。
因此可以通过XMDM字段将两个表连接起来,从而使查询结果可以同时得到人员档案信息和工资信息。
SELECT * from 人员档案,工资档案 where 人员档案.XMDM=工资档案.XMDM
左连接就是以前面的表为主,先列示左表中所有记录,然后右边(后面的)的表如有符合连接条件的记录就与左表字段连接后列示,否则不列示。
SELECT * from 人员档案 left join 工资档案 on 人员档案.XMDM=工资档案.XMDM
右连接是以后面的表为主,列示后面的表中所有记录与前面的表中符合连接条件的记录:
SELECT * from 人员档案 RIGHT join 工资档案 on 人员档案.XMDM=工资档案.XMDM ......