这段时间又懒惰了,打了几天游戏,o(╥﹏╥)o。不行还是要坚持学习,坚持更新。
今天更新这篇文章,是公司别的部门找我帮忙实现的一个功能。我一开始一听简单的一b,就连个数据库么, 我java开发工程师什么语言不会,都一个吊样。结果这个活, 干了好几天,哈哈,当然这期间大部分的时间不是写代码,是调试平台,我司有一个自己的自动化平台,我只想对这个平台说:你星星个星星星。
简单介绍一下这两个东西。
VBS 的全称是 Visual Basic Scripting Edition。VBS 是一种基于 Visual Basic 的脚本语言,由微软开发并广泛应用于 Windows 系统中。它主要用于编写和执行各种自动化任务、批处理脚本和简单的程序逻辑。VBS 脚本可以在命令行环境下运行,也可以嵌入到 HTML 页面中作为客户端脚本来实现交互和动态效果。
MongoDB是一种开源的、面向文档的 NoSQL(非关系型)数据库管理系统。它以高度灵活的数据模型和可扩展性而闻名,适用于处理大量结构不固定或频繁变化的数据。
好吧,下面赶快说一下我的实现方案。
方法一
vbs连接数据库代码
Dim conn
Set conn = CreateObject("ADODB.Connection")
' 配置连接字符串
conn.ConnectionString = "DRIVER={CData ODBC Driver for MongoDB};SERVER=192.168.1.130;DATABASE=Battery;UID='';PWD='';"
' 打开数据库连接
conn.Open
' 执行查询
Dim rs,i
Set rs = CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM MKL_20231202163921_001", conn
i = 0
' 处理查询结果
Do While Not rs.EOF
' 处理每一行数据
If i<5 Then
' 如果条件为真,则执行这段代码
MsgBox rs.Fields("Channel").Value
End If
i = i + 1
rs.MoveNext
Loop
' 关闭记录集和连接
rs.Close
conn.Close
没错就这么简单。这就写完了 。
但是!但是!但是!
这里面有个最麻烦的地方,就是下边我放的这个图,这个链接字符串中的DRIVER部分,这就是连接MongoDB的ODBC驱动,只有电脑先配置好了驱动才能连接成功,如果你们直接拷贝我上面的代码,那是肯定连接失败的,会提示你找不到指定驱动。
这个ODBC驱动是真的难找,因为MongoDB的官网就不提供VBS连接所需的ODBC驱动。(它应该就不支持vbs去连接了)
下面这个图是我下载的所有有关MongoDB的ODBC驱动,但是最后都无极告终,因为我确实太菜了,不太会用,有一个 mongodb-connector-odbc-1.0.0-win-64-bit 这个驱动好想还要配合什么BI控制器,我真是大蒙圈,百度查了很久也没有看懂,百度的资料也很少。
后来,经过不懈的努力我中找到了我代码中的 CData ODBC Driver for MongoDB 驱动。然后开始配置系统的ODBC驱动没下图。
前提驱动下载地址:MongoDB ODBC Driver: ODBC Driver for MongoDB - CData Software
1、再开始菜单直接搜索ODBC
2、点击添加
3、 完成
4、把对应的MongoDB信息填一下,然后test connection ,成功就行了,最后点击OK。
5、然后就创建好了,我们的代码中的DRIVER要写下面这个驱动程序下面的名字。
OK,到目前位置,我这个代码就真跑通了。
但是!但是!但是!这个驱动是花钱的!o(╥﹏╥)o
当时公司这个项目很急,所以想着花钱就花钱吧,能快点解决就行,但是这个CData的官网,服了,不能直接买,非要发邮件沟通,他们回复还很慢。
所有身为无所不能的java开发人员,我就只能另行其他方法。
方法二
引入第三方MongoDB官网提供的ODBC的对应的语言,后来选择Python,因为他也是工具类语言,不需要编译很快,当然我一开始想到的是用java来连接,但是为了这一个功能,引入java实在是太臃肿了。所有最后思路是:
VBS 连接 Python 连接 MongoDB
VBS 代码
Dim WshShell, pythonInterpreter, pythonScript
' 创建 WshShell 对象
Set WshShell = CreateObject("WScript.Shell")
' 构建运行命令 调用Python脚本
cmd = "python.exe D:\bihe\connect.py"
' 运行 Python 脚本
WshShell.Run cmd, 0, True
' --------------------延迟1秒,等待python脚本写入数据-------------------------
WScript.Sleep 1000
'----------------------- 数据获取----------------------------------
call jsonToObject()
function jsonToObject()
Dim filePath, fileContent, jsonObject
' JSON 文件路径
filePath = "D:\bihe\data.txt"
' 读取 JSON 文件内容
Set fso = CreateObject("Scripting.FileSystemObject")
Set file = fso.OpenTextFile(filePath)
fileContent = file.ReadAll
file.Close
'打印数据
WScript.Echo fileContent
end function
Python 代码 :这里要先安装Python,一般安装完Python会自带pip,最后在安装一下Python连接MongoDB的驱动包,直接使用命令:
pip install pymongo
如果是python3以上运行下边这个
pip3 install pymongo
from pymongo import MongoClient
# MongoDB 连接字符串
uri = "mongodb://10.10.168.150:27017"
# 连接到 MongoDB
client = MongoClient(uri)
# 选择数据库和集合
database = client['testdb']
collection = database['testdb']
# 查询数据
query = {} # 查询条件(可根据需求修改)
# data = collection.find(query)
data = collection.find_one(query)
file_path = "D://bihe//data.txt"
# 打开文件以进行写入,如果文件不存在则创建新文件
file = open(file_path, "w")
for document in data:
print(document)
# 写入内容到文件
file.write(document)
# 关闭连接
client.close()
# 关闭文件
file.close()
print("写入文件完成")
OK,最后就这样解决了。