试着用powershell连接sqlite数据库,网上搜到Ray Ferrell的”SQLite with PowerShell: A Step-by-Step Guide to Database Management“一遍,验证有效,就是广告太多不给出链接了。
第一步是需要donet驱动(可以看出ms自家的脚本和dotnet的深度集成)到sqlite主页下载System.Data.SQLite,https://www.sqlite.org/download.html,安装。
接着,新建ps1脚本,连接语句如下:
$Path = "数据库路径db文件路径,分割符号用双反斜杠"
$connstr = "Data Source=$Path"
$conn = New-Object System.Data.SQLite.SQLiteConnection
$conn.ConnectionString = $connstr
$conn.Open()
$command = $conn.CreateCommand()
$CommandText = "sql语句"
$command.CommandText = $CommandText
$command.CommandType = [System.Data.CommandType]::Text
$reader = $command.ExecuteScalar()
或
$reader = $command.ExecuteReader()
while ($reader.HasRows){
if ($reader.Read()){
Write-Host $reader["ip"]
}
}
$SQLiteConnection.Close()
总体是顺利的,期间遇到一点问题做记录如下:
1.判断是否库中已有特定数据行,可以用count语句+executescalar执行,返回的数就是记录行数。
2.发现一个upper函数,如 select * table where upper(hostname)=upper('" + $hostname + "')",可以不区分大小写匹配。
3.powershell的trim方法简单易用,如$str.trim(" t
n`r"),可以去除字符串左右两边的空格,制表符,换行符,回车符,一步到位。
4.执行写数据期间,遇到database is locked的难题,折腾良久,才发现是执行更新语句时库中存在多行匹配记录,一度以为是ms留下的坑,因相似的流程,以前用python可以写库的。