在sqlserver2008中的varbinary(MAX) 类型的文件,如何取出来呀?
此主题相关图片如下:1.png
用python代码已实现,现在我需要用foxtable把他上传的文件提取出来。谢谢!
import pyodbc
# 数据库连接字符串
conn_str = (
r'DRIVER={SQL Server};'
r'SERVER=172.16.14.14;'
r'DATABASE=collectdata;'
r'UID=sa;'
r'PWD=12345678'
)
# 连接到数据库
conn = pyodbc.connect(conn_str)
cursor = conn.cursor()
# 执行查询,假设你的表名为your_table,binary字段名为your_binary_field
cursor.execute("s elec t ItemFile from dbo.test where ID=1")
# 获取查询结果
rows = cursor.fetchall()
# 遍历结果集
for row in rows:
# row[0] 是binary字段的值
binary_data = row[0]
# 指定要保存的文件路径和文件名
file_path = 'd:\salarysurvey.xlsx'
# 打开文件准备写入
with open(file_path, 'wb') as file:
# 写入binary数据
file.write(binary_data)
# 关闭数据库连接
cursor.close()
conn.close()
[此贴子已经被作者于2024/11/9 8:57:14编辑过]
以下代码是想在按下ctrl +c 的时候把文件复制在剪贴板中,现在文件已经能从二进制列中取出来了, 但是无法复制到剪贴板中,请问代码哪里有问题?
Dim cname As String = e.Table.cols(e.Table.colsel).name
Dim TableName As String = e.Table.name
'msgbox(TableName)
If cname = "FileName" Then
Dim dr As DataRow = Tables("文件收发管理表").Current.DataRow
Dim fl As String = ProjectPath & dr("FileName")
' MessageBox.show(fl)
If e.Control = True AndAlso e.KeyCode = Keys.C Then '按下ctrl+C
MessageBox.show("按下")
If dr.SQLLoadFile("FileUpload", fl) Then '如果提取文件成功
'Dim Proc As New Process '打开文件
'Proc.File = fl
'Proc.Start()
'以下三行为将文件路径复制到剪贴板中
Dim ls As New System.Collections.Specialized.StringCollection
ls.add(fl)
MessageBox.Show(fl)
My.Computer.Clipboard.SetFileDropList(ls)
Else
Messagebox.Show("附件提取失败,可能并不存在附件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End If
End If
这段代码我以前用过啊,可以按ctrl+c 把文件复制到剪贴板中,这样在接下来再按ctrl+v的时候,可以复制到任何路径。
上述代码执行的时候复制的是fileName列的内容,而不是执行的 上述代码,怎么让其按ctr+c后执行代码,而不是复制格子中的内容?
[此贴子已经被作者于2024/11/11 11:32:04编辑过]