小编Jaq*_*ues的帖子

"using"关键字不会关闭打开的SQL连接

我指的是很久很久以前发布在Stack Overflow上的帖子. 结束使用关闭打开的SQL连接

但是我有一个问题.我发现在SQL 2012 Express Edition和SQL 2008 Developer Edition上使用不会完全关闭连接.

这是我用过的代码.代码将遍历每个数据库并查找指定的特定表,但是,当它完成后,并且在服务器上运行sp_who时,所有连接仍然存在.状态为休眠状态,cmd为"AWAITING COMMAND",但是当您尝试创建数据库时,无法锁定模型,因为您仍然可以打开连接.这是班里的一个错误吗?

using (SqlConnection conn = new SqlConnection("Data Source=" + ServerNameCombo.Text + ";Initial Catalog=master;Persist Security Info=True;User ID=" + UserNameEdit.Text + ";Password=" + PasswordEdit.Text))
{
    using (SqlCommand dbs = new SqlCommand("Select name from sysdatabases", conn))
    {
        conn.Open();
        using (SqlDataReader reader = dbs.ExecuteReader())
        {
            while (reader.Read())
            {
                using (SqlConnection dbconn = new SqlConnection("Data Source=" + ServerNameCombo.Text + ";Initial Catalog=" + reader["name"].ToString() + ";Persist Security Info=True;User ID=" + UserNameEdit.Text + ";Password=" + PasswordEdit.Text)) …
Run Code Online (Sandbox Code Playgroud)

c# sql-server sqlconnection

6
推荐指数
1
解决办法
1078
查看次数

从文件夹中读取无效的文件名

我有一个有趣的问题.我们的客户通过电话录制了语音对话,但是录制的文件名无效.这是文件名的示例123:123.wmv

相信它,Windows Media编码器创建了该文件,并且所有信息都在文件中,但Windows显然无法识别文件名,只显示在文件夹中123,文件为0KB

从这里开始编辑:感谢Keith Miller向我指出了正确的方向,我可以编写一个函数,从文件中提取流名称并使用它.

我已经包含了如何在文件中创建两个数据流,读取流名称和从每个流中读取数据的工作副本.这非常棒,所以我希望其他人也可以使用它.我的代码忽略了主流.如果将数据写入主流,最好不要忽略它.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, uGeneralStuff;

type
  _FILE_STREAM_INFORMATION = record
    NextEntryOffset: cardinal;
    StreamNameLength: cardinal;
    StreamSize: int64;
    StreamAllocationSize: int64;
    StreamName: array[0..MAX_PATH] of WideChar;
  end;

  PFILE_STREAM_INFORMATION = ^_FILE_STREAM_INFORMATION;

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    InfoBlock: _FILE_STREAM_INFORMATION;
    StatusBlock : record
      Status: Cardinal;
      Information: PDWORD;
    end;

    procedure CreateFile(FileName, Info: String);
    function ReadFile(FileName: String): String;
    function ReadStreams(filename: String): TStringList; …
Run Code Online (Sandbox Code Playgroud)

delphi file-io

5
推荐指数
1
解决办法
1830
查看次数

".exe"触发了一个断点

我继承了完全以32位运行的代码,但是当我将编译器更改为64位时,如果运行代码,则会出错.如果我执行代码,它(几乎总是)只是稍后失败.代码中有很多指针,C++不是我强大的套件.是否有人可以了解错误发生的原因?

我需要了解的是:首先创建BYTE***是否正常,然后BYTE**和BYTE*永远不会被分配给.我不明白这是如何工作的.我认为BYTE*会被分配到第一个,然后是BYTE**,然后是BYTE***.为什么这适用于x86,而不适用于x64?

void* AllocMemory(SIZE_T dwBYTEs)
{
    void* result;
    if (dwBYTEs > 0)
    {
        result = malloc(dwBYTEs);
        if (result != NULL)
            return result;
    }
    return 0;
}

BYTE** CreateBytes(int arg_0, int arg_4, int arg_8)
{
    BYTE** hedi = (BYTE**)AllocMemory(arg_0 * 4);
    if (!hedi)return 0;
    hedi[0] = (BYTE*)AllocMemory(arg_0 * arg_8 * arg_4);
    if (!hedi[0]) {
        delete(hedi);
        return 0;
    }
    for (int i = arg_0 - 1; i > 0; i--) {
        hedi[arg_0 - 1 - i + 1] = &hedi[0][arg_4 * arg_8 …
Run Code Online (Sandbox Code Playgroud)

c++ malloc memory-management

0
推荐指数
1
解决办法
468
查看次数

Linq中的这两个语句之间有区别吗?

这两个语句之间是否有区别。我做了一个测试,但在延迟执行的测试中,它失败了。有什么区别?

items.Where(w => w.Length >= length).Select(w => w.Substring(0, length)).Distinct();
Run Code Online (Sandbox Code Playgroud)

(from a in items
                where a.Length >= 3
                select a.Substring(0, length)).Distinct();
Run Code Online (Sandbox Code Playgroud)

他们对我读得一样,我相信也完全一样吗?

c# linq

0
推荐指数
1
解决办法
73
查看次数