![]() |
#2
风吹过b2016-05-16 09:52
ADOrs.Open "Insert into ImageTable2(ImageName,ImagePath) Values(PictureName,PicturePath)"
二个问题。 1、执行非查询SQL命令不是使用这种方法。也许这种方法可行。 2、SQL命令有问题。 先说第一个问题。 执行SQL命令。你先看 MSDN的帮助。 --------------------- Execute 方法 (ADO Connection) 执行指定的查询、SQL 语句、存储过程或提供者特有的文本。 语法 对于不是以行返回的命令字符串: connection.Execute CommandText, RecordsAffected, Options 对于以行返回的命令字符串: Set recordset = connection.Execute (CommandText, RecordsAffected, Options) 返回值 返回 Recordset 对象引用。 参数 CommandText String 值,包含要执行的 SQL 语句、存储过程、URL 或提供者特有的文本。此外,仅当提供者被 SQL 识别时才可使用表名称。例如,如果使用“Customers”作为表名称,则 ADO 将自动预先根据标准 SQL Select 语法构成“SELECT * FROM Customers”,并将其作为 T-SQL 语句传递给提供者。 RecordsAffected 可选。Long 变量,提供者向其返回操作影响的记录数目。 Options 可选。Long 值,指示提供者计算 CommandText 参数的方式。该值可以是一个或多个 CommandTypeEnum 或 ExecuteOptionEnum 值的位掩码。 注意 使用 ExecuteOptionEnum 的 adExecuteNoRecords 值,通过使内部处理最小化来提高性能。 不要将 CommandTypeEnum 的 adCmdFile 或 adCmdTableDirect 值与 Execute 一起使用。这些值仅可用作 Recordset 的 Open 和 Requery 方法的选项。 说明 使用 Connection 对象的 Execute 方法可以执行在指定连接的 CommandText 参数中传递给该方法的查询。如果 CommandText 参数指定按行返回的查询,那么执行产生的任何结果都将存储在新的 Recordset 对象中。如果此命令不用于返回结果(如 SQL UPDATE 查询),则只要指定了 adExecuteNoRecords 选项,提供者就将返回 Nothing;否则,Execute 将返回已关闭的 Recordset。 返回的 Recordset 对象始终是只读的、仅向前的游标。如果需要具有更多功能的 Recordset 对象,应先创建具有所需属性设置的 Recordset 对象,然后使用 Recordset 对象的 Open 方法执行查询并返回所需的游标类型。 CommandText 参数的内容是提供者特有的,可以是标准的 SQL 语法或提供者支持的任何特殊命令格式。 此操作结束时将发出 ExecuteComplete 事件。 ---------------------- 在这里,建议你应该使用 ADOcn.Execute SQL命令 这样来执行 非查询SQL命令,当然这个命令也会返回一个只读向前的 Recordset ,你要用来执行查询也是可以的。 第二个问题。 SQL命令错误了。 "Insert into ImageTable2(ImageName,ImagePath) Values(PictureName,PicturePath)" 用双引号引起来的是字符串,原样输出。而你这里面,PictureName 和 PicturePath 明显是二个变量。应该使用连接字符串的方式生成 SQL 感觉应该是改为: dim sql as string sql="Insert into ImageTable2(ImageName,ImagePath) Values('" & PictureName & "','" & PicturePath "');" 然后再用第一个方法执行,当然你用你的方法试着能否执行也是可以的,值得你去试。 ADOcn.Execute SQl |

Dim PictureDiskFile As String
Dim PictureName As String
Private Sub Command1_Click()
CommonDialog1.Filter = "图片文件(*.JPG;*.BMP;*.GIF)|*.jpg;*.bmp;*.gif"
CommonDialog1.ShowOpen
PictureDiskFile = CommonDialog1.FileName
PictureName = CommonDialog1.FileTitle
If PictureDiskFile = "" Then
Exit Sub
End If
FileNumber = FreeFile
Open PictureDiskFile For Binary Access Read As FileNumber
PictureFileLength = LOF(FileNumber)
If PictureFileLength = 0 Then
Close FileNumber
MsgBox PictureDiskFile & "无内容或不存在!"
End If
Picture1.Picture = LoadPicture(PictureDiskFile)
Close FileNumber
End Sub
Private Sub Command2_Click()
FileCopy PictureDiskFile, App.Path & "\picture"
PicturePath = App.Path & "\picture"
Dim ADOrs As New Recordset
Set ADOrs.ActiveConnection = ADOcn
ADOrs.Open "Insert into ImageTable2(ImageName,ImagePath) Values(PictureName,PicturePath)"
ADOrs.Update
End Sub
Dim PictureName As String
Private Sub Command1_Click()
CommonDialog1.Filter = "图片文件(*.JPG;*.BMP;*.GIF)|*.jpg;*.bmp;*.gif"
CommonDialog1.ShowOpen
PictureDiskFile = CommonDialog1.FileName
PictureName = CommonDialog1.FileTitle
If PictureDiskFile = "" Then
Exit Sub
End If
FileNumber = FreeFile
Open PictureDiskFile For Binary Access Read As FileNumber
PictureFileLength = LOF(FileNumber)
If PictureFileLength = 0 Then
Close FileNumber
MsgBox PictureDiskFile & "无内容或不存在!"
End If
Picture1.Picture = LoadPicture(PictureDiskFile)
Close FileNumber
End Sub
Private Sub Command2_Click()
FileCopy PictureDiskFile, App.Path & "\picture"
PicturePath = App.Path & "\picture"
Dim ADOrs As New Recordset
Set ADOrs.ActiveConnection = ADOcn
ADOrs.Open "Insert into ImageTable2(ImageName,ImagePath) Values(PictureName,PicturePath)"
ADOrs.Update
End Sub
只有本站会员才能查看附件,请 登录
是这一行报错ADOrs.Open "Insert into ImageTable2(ImageName,ImagePath) Values(PictureName,PicturePath)"
[此贴子已经被作者于2016-5-16 09:30编辑过]