110,533
社区成员
发帖
与我相关
我的任务
分享
public bool Insert(string id, string versionTime, string versionDesc, string versionDate, string updateInfo,
string inputUser, IList<XFileInfo> fileInfos)
{
DbConnection conn = this.m_DataAccess.Connection;
SqlTransaction trans = null;
try
{
DbCommand cmd = new SqlCommand();
cmd.Connection = conn;
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
trans = conn.BeginTransaction() as SqlTransaction;
cmd.Transaction = trans;
string sql = "INSERT INTO " + this.TableName + "(ID,VersionTime,VersionDesc,VersionDate,UpdateInfo,InputUserId,InputTime)" +
"VALUES('{0}','{1}','{2}','{3}','{4}','admin',getdate())";
sql = string.Format(sql, id, versionTime, versionDesc, versionDate, updateInfo, inputUser);
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
int loopNo = 0;
foreach (XFileInfo fileInfo in fileInfos)
{
string sqlFiles = "INSERT INTO VersionInfoFiles(ID,VersionInfoID,FileName,FileBytes,FilePath)VALUES(newid(),@VersionInfoID,@FileName,@FileBytes,@FilePath)";
FileInfo fi = new FileInfo(fileInfo.FileFullName);
if (fi.Exists == false)
{
return false;
//直接返回失败
}
byte[] bData = null;
using (FileStream fs = fi.OpenRead())
{
bData = new byte[fi.Length];
fs.Read(bData, 0, Convert.ToInt32(fi.Length));
}
cmd.Parameters.Clear();
DbParameter parameterInfoId = new SqlParameter("@VersionInfoID", id);
cmd.Parameters.Add(parameterInfoId);
DbParameter parameterFileName = new SqlParameter("@FileName", fileInfo.FileName);
cmd.Parameters.Add(parameterFileName);
DbParameter parameterFileBytes = new SqlParameter("@FileBytes", bData);
cmd.Parameters.Add(parameterFileBytes);
DbParameter parameterDirectory = new SqlParameter("@FilePath", fileInfo.DirectoryName);
cmd.Parameters.Add(parameterDirectory);
cmd.CommandText = sqlFiles;
cmd.ExecuteNonQuery();
loopNo += 1;
XUploadEventArgs e = new XUploadEventArgs(fileInfos.Count, loopNo, fileInfo.FileName);
this.OnUpload(this, e);
}
trans.Commit();
return true;
}
catch (Exception ex)
{
trans.Rollback();
XMessageBox.ShowError(ex.Message);
XErrorLogTool.WriteLog(ex.ToString());
}
finally
{
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
if (trans != null)
{
trans.Dispose();
}
}
return false;
}