在VBA中如何将SQL得到的数据直接赋值到数组?

计算机语言、软件、硬件
回复
peng
Site Admin
帖子: 199
注册时间: 周五 11月 01, 2019 9:06 am

在VBA中如何将SQL得到的数据直接赋值到数组?

帖子 peng »

在VBA中如何将SQL得到的数据直接赋值到数组?

Q:在VBA中如何将SQL得到的数据直接赋值到数组?
A:可以利用RecordSet的GetRows方法获取数组。

Sub SQL2Arr()
Dim AdoCN As Object
Dim AdoRe As Object
Dim SQL As String
Dim Arr1, Arr2, Arr3
Set AdoCN = CreateObject("ADODB.Connection")
Set AdoRe = CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM [Sheet1$A1:C11]"
AdoCN.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.FullName & ";" & _
"Extended Properties=Excel 12.0;"
Set AdoRe = AdoCN.Execute(SQL)
Arr1 = AdoRe.GetRows(, , "姓名") '取得某一列
AdoRe.MoveFirst '取完一次,要将指针移动到最前
Arr2 = AdoRe.GetRows(, , Array("姓名", "班级")) '取得两列
AdoRe.MoveFirst '取完一次,要将指针移动到最前
Arr3 = AdoRe.GetRows '取得全部
AdoCN.Close
Set AdoRe = Nothing
Set AdoCN = Nothing
End Sub

peng
Site Admin
帖子: 199
注册时间: 周五 11月 01, 2019 9:06 am

Re: 在VBA中如何将SQL得到的数据直接赋值到数组?

帖子 peng »

MySQL中给数据表插入多行数据

     有时因为测试需求,需要给某数据表中插入多行数据,所以自己就琢磨了一下,该过程实现涉及到了MySQL存储过程,想详细了解的可看下这个博客:MySQL存储过程,以下是具体的实现过程:

1、先创建一个表:

create table table_name(
id char(50) not null,
num char(50) not null
);

2、创建存储过程:MySQL中给数据表插入多行数据用到了MySQL存储过程中的控制语句—循环语句  WHILE-DO…END-WHILE(当然可以用其他语句,我目前只试了这个语句):
运行下面代码:

DELIMITER ;; //注意DELIMITER后有个空格
CREATE PROCEDURE test() //创建存储过程,名为test(可随意取名)
BEGIN
DECLARE Y INT;
set Y=1;
WHILE Y<20 //添加19行数据
DO
INSERT INTO table_name(id,num) values(Y,Y); //给表名为table_name的行id,num添加数据
SET Y=Y+1;
END WHILE ;
COMMIT;
END;; //存储成功

call test; //用call命令调用存储

3、查看添加数据是否成功:

desc table_name;
select * from table_name;
在命令窗口查看表名为table_name中数据如下所示:
OK,给数据表中插入多行数据成功。

当然,如果想在序号前加上字符串时,可以将代码第8行做如下更改:
INSERT INTO table_name(id,num) values(concat('T-',Y),concat('S-',Y));

回复