大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一般需要遍历的数据处理都用ADO
创新互联总部坐落于成都市区,致力网站建设服务有做网站、网站建设、网络营销策划、网页设计、网站维护、公众号搭建、微信小程序开发、软件开发等为企业提供一整套的信息化建设解决方案。创造真正意义上的网站建设,为互联网品牌在互动行销领域创造价值而不懈努力!
但建议你遍历之前,设置一下主键,估计速度会提高70%左右。
相关知识:ADO简介
一种程序对象,用于表示用户数据库中的数据结构和所包含的数据。在Microsoft Visual Basic编辑器中,可以使用ADO对象以及ADO的附加组件(称为Microsoft ADO Extensions for DLL and Security(ADOX))来创建或修改表和查询、检验数据库、或者访问外部数据源。还可在代码中使用ADO来操作数据库中的数据。
f exists (select * from dbo.sysobjects where id = object_id(N'[tb]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [tb]
GO
--示例数据
create table [tb]([id] int identity(1,1),[pid] int,name varchar(20))
insert [tb] select 0,'中国'
union all select 0,'美国'
union all select 0,'加拿大'
union all select 1,'北京'
union all select 1,'上海'
union all select 1,'江苏'
union all select 6,'苏州'
union all select 7,'常熟'
union all select 6,'南京'
union all select 6,'无锡'
union all select 2,'纽约'
union all select 2,'旧金山'
go
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_id]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_id]
GO
/*--树形数据处理
级别及排序字段
--邹建 2003-12(引用请保留此信息)--*/
/*--调用示例
--调用函数实现分级显示
select replicate('-',b.[level]*4)+a.name
from [tb] a,f_id()b
where a.[id]=b.[id]
order by b.sid
--*/
create function f_id()
returns @re table([id] int,[level] int,sid varchar(8000))
as
begin
declare @l int
set @l=0
insert @re select [id],@l,right(10000+[id],4)
from [tb] where [pid]=0
while @@rowcount0
begin
set @l=@l+1
insert @re select a.[id],@l,b.sid+right(10000+a.[id],4)
from [tb] a,@re b
where a.[pid]=b.[id] and b.[level]=@l-1
end
return
end
go
--调用函数实现分级显示
select replicate('-',b.[level]*4)+a.name
from [tb] a,f_id()b
where a.[id]=b.[id]
order by b.sid
go
--删除测试
drop table [tb]
drop function f_id
go
/*--结果
中国
----北京
----上海
----江苏
--------苏州
------------常熟
--------南京
--------无锡
美国
----纽约
----旧金山
加拿大
--*/
首先异常提示已经很清楚!对于空的结果集进行操作是非法的,现在你要做的事情其实很简单,调试进去或者把String sql="select * from score where workID='"+
comboBox1.getSelectedItem()+"'";这个sql语句打印出来,然后到数据库中去执行这条语句,看有没查询到数据,如果没有的话说明的传人的参数可能不对,你要好好在检查一下。
在老版本的MySQL3.22中,MySQL的单表限大小为4GB,当时的MySQL的存储引擎还是ISAM存储引擎。但是,当出现MyISAM存储引擎之后,也就是从MySQL3.23开始,MySQL单表最大限制就已经扩大到了64PB了(官方文档显示)。也就是说,从目前的技术环境来看,MySQL数据库的MyISAM存储引擎单表大小限制已经不是有MySQL数据库本身来决定,而是由所在主机的OS上面的文件系统来决定了。而MySQL另外一个最流行的存储引擎之一Innodb存储数据的策略是分为两种的,一种是共享表空间存储方式,还有一种是独享表空间存储方式。当使用共享表空间存储方式的时候,Innodb的所有数据保存在一个单独的表空间里面,而这个表空间可以由很多个文件组成,一个表可以跨多个文件存在,所以其大小限制不再是文件大小的限制,而是其自身的限制。从Innodb的官方文档中可以看到,其表空间的最大限制为64TB,也就是说,Innodb的单表限制基本上也在64TB左右了,当然这个大小是包括这个表的所有索引等其他相关数据。而当使用独享表空间来存放Innodb的表的时候,每个表的数据以一个单独的文件来存放,这个时候的单表限制,又变成文件系统的大小限制了。
根据你的资料,正确的答案应该如下:望采纳
CREATE DEFINER=`root`@`localhost` PROCEDURE `P_updateUd18`(`Param` int(11))
BEGIN
declare Rcount,i,j,k,Rparentid,myId int(11) default 0;
declare Robjname,Robjname23,Robjname45,Robjname67,Robjname89 varchar(9) default "";
select count(id) into Rcount from ud18;
repeat
select id,objname into myId,Robjname from ud18 order by id limit i,1;
set Robjname23=SUBSTRING(Robjname,2,2);
set Robjname45=SUBSTRING(Robjname,4,2);
set Robjname67=SUBSTRING(Robjname,6,2);
set Robjname89=SUBSTRING(Robjname,8,2);
if Robjname890 then
set @sql=concat("select id into @abc from ud18 where objname like '",left(Robjname,7),"00","'");
prepare stmt from @sql;
EXECUTE stmt;
set Rparentid=@abc;
update ud18 set parentid=Rparentid where id=myId;
elseif Robjname670 then
set @sql=concat("select id into @abc from ud18 where objname like '",left(Robjname,5),"0000","'");
prepare stmt from @sql;
EXECUTE stmt;
set Rparentid=@abc;
update ud18 set parentid=Rparentid where id=myId;
elseif Robjname450 then
set @sql=concat("select id into @abc from ud18 where objname like '",left(Robjname,3),"000000","'");
prepare stmt from @sql;
EXECUTE stmt;
set Rparentid=@abc;
update ud18 set parentid=Rparentid where id=myId;
elseif Robjname230 then
-- set @sql=concat("select id into @abc from ud18 where objname like '",left(Robjname,1),"00000000","'");
-- prepare stmt from @sql;
-- EXECUTE stmt;
-- set Rparentid=@abc;
update ud18 set parentid=0 where id=myId;
else
set j=0;
end if;
set i=i+1;
until iRcount end repeat;
END;