Hi,
I'm having an issue uploading a image Blobs to a MS SQL Server and can't figure out where I'm going wrong (Using Powerbuilder 2017 R3, both in Desktop App and Appeon Mobile).
The Upload Blob is working and creating the database records but it looks like its getting cut off only a small way through the insert.
This cut off is more dramatic the larger the image.
e.g.
I've updated the pbodb170.ini PBMaxBlobSize under each of the database sections and also included it in the database script
INI:
PBMaxBlobSize='1073741824'
PBMaxTextSize='1073741824'
Case IS_USE_SCRIPT
as_dbms = "SNC SQL Native Client(OLE DB)"
as_database = ""
as_userid = ""
as_dbpass = ""
as_logid = "myDBbUserID"
as_logpass = "myDBUserPassword"
as_server = "myDbServer"
as_dbparm = "Database='MyDB';PBMaxBlobSize=1073741824"
as_lock = ""
as_autocommit = "true"
Database Table is in MS SQL 2014 Express
The field in the database is varbinary(max)
This is the code being used to save the blob to the database
Long l_file_handle, ll_blob_id
blob l_blob_file
str_response l_str_response
String ls_error
SQLCA.AutoCommit = TRUE
// Get File Handle
l_file_handle = FileOpen(as_filepath, StreamMode!)
IF l_file_handle <> -1 THEN
// Read Blob into memory
FileRead(l_file_handle, l_blob_file)
FileClose(l_file_handle)
// Add Storage Blob Main Record - must add blob seperately using updateblob
INSERT INTO storage_blobs
(
Filename,
CreatedBy
)
VALUES
(
'cat2.jpg',
'AR'
)
USING sqlca;
IF SQLCA.SQLNRows > 0 THEN
COMMIT USING SQLCA;
Else
l_str_response.success = false
l_str_response.message = 'Cannot insert blob record to database.' +&
'SQL error ' + String(SQLCA.SQLDBCode) + ' ' +&
SQLCA.SQLErrText
return l_str_response
END IF
// Get Inserted Record ID
SELECT SCOPE_IDENTITY()
INTO :ll_blob_id
FROM stud
USING SQLCA;
l_str_response.result = ll_blob_id
// Upload Blob Into Record
UPDATEBLOB storage_blobs
SET FileBlob = :l_blob_file
WHERE storage_blobs.ID = :ll_blob_id
USING SQLCA;
IF SQLCA.SQLNRows > 0 THEN
COMMIT USING SQLCA;
Else
l_str_response.success = false
l_str_response.message = 'Cannot upload blob to database.' +&
'SQL error ' + String(SQLCA.SQLDBCode) + ' ' +&
SQLCA.SQLErrText
return l_str_response
END IF
ELSE
l_str_response.success = false
l_str_response.message = 'Cannot get handle on file'
return l_str_response
END IF
l_str_response.success = true
l_str_response.message = ''
return l_str_response
Any ideas?
Thanks for this. I am going to mark this as the accepted answer.
This fixes the issue for me in PB2017 R3 desktop but I'm still having an issue with the App when deployed to Mobile Powerserver (I know there can be other web config files here) but as my sample code wasn't working in the desktop either I just wanted to make sure that was okay first before start digging into the Mobile side.