我正在分块读取源文件并将其传递给 WCF 服务以在某些远程 SMB 上写下。我保持打开 FileStream 直到写入所有数据。
多次打开和关闭文件处理会降低性能,因此我遵循这种方法。
写入所有数据后,我调用 CloseHandle()。然后我可能需要通过调用 DoSomeOperation() 对同一文件执行一些其他操作。因为我已经在 CloseHandle() 函数中关闭了文件句柄,但在 DoSomeOperation() 中收到错误“文件正在与其他进程一起使用”。如果我在延迟一段时间后调用 DoSomeOperation() ,那么问题就不存在。
请帮助我们在我调用 FileStream.Close() 时立即关闭文件句柄。
该代码片段是一个大程序的一部分,因此我无法在这里提及所有代码。
//In WCF service
FileStream fs = null;
public void AppendBytes(string fileName, byte[] data, long position)
{
try
{
if (fs==null)//In first call, open the file handle
fs = System.IO.File.Open(fileName, System.IO.FileMode.Append, System.IO.FileAccess.Write, System.IO.FileShare.None);
fs.Write(data, 0, data.Length);
}
catch (Exception ex)
{
//Close handle in case of error
if (fs != null)
fs.Close();
}
}
public void CloseHandle()
{
//Close …Run Code Online (Sandbox Code Playgroud) 我想使用COM Api或WMI更改共享文件夹中的"启用基于访问的枚举","允许共享缓存"和"加密数据访问"属性.
我以前Win32_Share用来创建共享,但是没有属性来分配这些属性.但后来我开始了解' MSFT_SmbShare'课堂,但我只能看到CreateShare方法.我是在退出共享时启用/禁用这些标志但无法找到任何UpdateShare方法.
请建议一种方法,通过COM API或WMI中的任何一个在共享上切换这些标志.
我们是否需要在服务器中安装Microsoft office来运行应用程序以将数据从excel文件导入到mssql数据库?
有什么建议或想法吗?
我用的代码
public partial class _Default : System.Web.UI.Page
{
private String strConnection = "Data Source=MYCBJ017550027;Initial Catalog=MySamplesDB;Integrated Security=True";
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSend_Click(object sender, EventArgs e)
{
string path = fileuploadExcel.PostedFile.FileName;
string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;Persist Security Info=False";
OleDbConnection excelConnection =new OleDbConnection(excelConnectionString);
OleDbCommand cmd = new OleDbCommand("Select [ID],[Name],[Designation] from [Sheet1$]",excelConnection);
excelConnection.Open();
OleDbDataReader dReader;
dReader = cmd.ExecuteReader();
SqlBulkCopy sqlBulk = new SqlBulkCopy(strConnection);
sqlBulk.DestinationTableName = "Excel_table";
sqlBulk.WriteToServer(dReader);
excelConnection.Close();
} …Run Code Online (Sandbox Code Playgroud) 我在语句中遇到异常无效的列名'False'
reader = cmd.ExecuteReader(CommandBehavior.SingleRow);
Run Code Online (Sandbox Code Playgroud)
我理解这可能与SQL的布尔类型是"位"并且它没有转换false为有关0.你如何缓解这个问题,或者这个问题在这里?
public override bool ValidateUser(string username, string password)
{
bool isValid = false;
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("SELECT Password, IsApproved FROM Users" +
" WHERE Email = @Email AND ApplicationName = @ApplicationName AND IsLockedOut = False", conn);
cmd.Parameters.Add("@Email", SqlDbType.NVarChar, 128).Value = username;
cmd.Parameters.Add("@ApplicationName", SqlDbType.NVarChar, 255).Value = m_ApplicationName;
SqlDataReader reader = null;
bool isApproved = true;
string pwd = "";
try
{
conn.Open();
reader = cmd.ExecuteReader(CommandBehavior.SingleRow);
if …Run Code Online (Sandbox Code Playgroud) 我只是想在MySQL中编写一个函数,我可以传递一个子查询,以便输出该子查询的JSON表示.
我经常从MySQL获取大量数据,然后将其转换为JSON以获得API输出.在SQL服务器上编写一个MySQL函数来返回JSON可能会提高速度吗?
我的想象力:
query('SELECT * FROM people');
// Output:
// +----+--------+-----+
// | id | name | Age |
// +----+--------+-----+
// | 1 | Molly | 24 |
// | 2 | Edward | 28 |
// +----+--------+-----+
query('JSON(SELECT * FROM people)');
// Output:
// [{"id":1,"name":"Molly","Age":24},{"id":2,"name":"Edward","Age":28}]
Run Code Online (Sandbox Code Playgroud)
可能?如果有,那么我可以开始的任何线索?
我使用ODBC连接来连接到数据库.当我OdbcCommand.ExecuteNonQuery使用insert语句执行时,记录将插入到表中,但该方法返回0.
ExecuteNonQuery返回受影响的记录数.它在删除和更新的情况下工作正常,但在插入时不起作用.
query = "Insert into table1 (field1, field2) values (1,2)";
OdbcConnection = _remoteconn = new OdbcConnection(constring);
OdbcCommand cmd = new OdbcCommand(query, _remoteconn);
recordsAffected = cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud) 如何为从SELECT语句创建的临时表定义键?
我有:
CREATE temporary TABLE _temp_unique_parts_trading
engine=memory AS
(SELECT parts_trading.enquiryref,
sellingcurrency,
jobs.id AS jobID
FROM parts_trading,
jobs
WHERE jobs.enquiryref = parts_trading.enquiryref
GROUP BY parts_trading.enquiryref)
Run Code Online (Sandbox Code Playgroud)
但是我在哪里定义键?