我终于得到了以下解决方案(感谢 alexm 的评论):
string insert_query = @"INSERT INTO publications
(
UPLOADER ,
FILENAME ,
TITLE ,
AUTHORS ,
KEYWORDS ,
FILE_DATA ,
INSERTDATE )
VALUES
( '{0}' , '{1}' , '{2}' , '{3}' , '{4}' , @FILE_DATA , '{5}' ) ",
staffid, filemd5, title, author, keyword, DateTime.Now );
using( FbConnection myConnection = utility.connect_to_fbserver() )
{
myConnection.Open();
FbTransaction myTransaction = myConnection.BeginTransaction();
FbCommand myCommand = new FbCommand();
myCommand.CommandText = insert_query;
myCommand.Connection = myConnection;
myCommand.Transaction = myTransaction;
myCommand.Parameters.Add( "@FILE_DATA", FbDbType.Binary, filearray.Length, "FILE_DATA" );
myCommand.Parameters[0].Value = filearray;
// Execute query
myCommand.ExecuteNonQuery();
// Commit changes
myTransaction.Commit();
// Free command resources in Firebird Server
myCommand.Dispose();
}
但是,我应该提到,在 Mark Rottevell 发表评论之后,以下 firebird 查询构造给出了Dynamic SQL Error SQL error code = -303 internal error
string insert_query = @"INSERT INTO publications
(
UPLOADER ,
FILENAME ,
TITLE ,
AUTHORS ,
KEYWORDS ,
FILE_DATA ,
INSERTDATE )
VALUES
( @UPLOADER , @FILENAME, @TITLE , @AUTHORS, @KEYWORDS, @FILE_DATA , @INSERTDATE) ";
using( FbConnection myConnection = utility.connect_to_fbserver() )
{
myConnection.Open();
FbTransaction myTransaction = myConnection.BeginTransaction();
FbCommand myCommand = new FbCommand();
myCommand.CommandText = insert_query;
myCommand.Connection = myConnection;
myCommand.Transaction = myTransaction;
myCommand.Parameters.Add( "@UPLOADER", FbDbType.Text, staffid.Length, "UPLOADER" );
myCommand.Parameters.Add( "@FILENAME", FbDbType.Text, filemd5.Length, "FILENAME" );
myCommand.Parameters.Add( "@TITLE", FbDbType.Text, title.Length, "TITLE" );
myCommand.Parameters.Add( "@AUTHORS", FbDbType.Text, author.Length, "AUTHORS" );
myCommand.Parameters.Add( "@KEYWORDS", FbDbType.Text, keyword.Length, "KEYWORDS" );
myCommand.Parameters.Add( "@FILE_DATA", FbDbType.Binary, filearray.Length, "FILE_DATA" );
myCommand.Parameters.Add( "@INSERTDATE", FbDbType.Text, today.Length, "INSERTDATE" );
myCommand.Parameters[0].Value = staffid;
myCommand.Parameters[1].Value = filemd5;
myCommand.Parameters[2].Value = title;
myCommand.Parameters[3].Value = author;
myCommand.Parameters[4].Value = keyword;
myCommand.Parameters[5].Value = filearray;
myCommand.Parameters[6].Value = today;
// Execute query
myCommand.ExecuteNonQuery();
// Commit changes
myTransaction.Commit();
// Free command resources in Firebird Server
myCommand.Dispose();
}