小编Ric*_*ich的帖子

SQL Server BEGIN/END与BEGIN TRANS/COMMIT/ROLLBACK

我一直试图在网上找到关于这些陈述之间的差异的信息,在我看来它们是相同的,但我无法找到这两者的确认或两者之间的任何比较.

这样做有什么区别:

BEGIN
    -- Some update, insert, set statements
END
Run Code Online (Sandbox Code Playgroud)

这样做

BEGIN TRANS
    -- Some update, insert, set statements
COMMIT TRANS
Run Code Online (Sandbox Code Playgroud)

请注意,只有在某些异常或超时或其他常见故障的情况下才需要回滚,因此不会有回滚的条件原因.

sql sql-server transactions

22
推荐指数
2
解决办法
3万
查看次数

C#文本框自动完成:限制为约50条建议

我正在使用一个文本框在C#中工作,该文本框用作id编号的数据库(Access SQL)记录查找的输入.我希望能够在文本框中使用AutoComplete,但有一些限制.

最大的问题是系统中的ID数量大约为数千,因此我不需要一次性填充AutoComplete框,而是需要监视文本框中的内容,并且只有〜时才会显示自动完成建议. 50个或更少的选择.

目前,我正在对每个KeyDown执行此查询:SELECT count(*)FROM Table WHERE id LIKE'textbox.text%'

当计数小于50时,我使用上述语句的SELECT id版本的结果填充自动完成.这导致了我几个问题,大多数似乎是C#怪癖,我不明白.

1)当我在单个KeyDown事件中清除或添加AutoCompleteCustomSet时,按下的实际键不会被添加到字符串中(即不会发生正常的文本框输入行为).

2)我尝试将AutoCompleteCustomeSet更新分离到另一个事件(KeyPress或KeyUp),但这会导致崩溃,或者自动完成显示只会在隐藏之前显示.

我觉得这个问题必须是常见的,我只是以错误的方式去做.有人可以提供一些建议吗?谢谢!

编辑:这是Windows窗体

EDIT2:前50名选择不能解决问题,因为用户输入(可能是退格和重新输入)前50名将会改变.

c# autocomplete winforms

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

SQL 执行计划是基于 Schema 还是 Data 还是基于两者?

我希望这个问题不是太明显……我已经找到了很多关于解释执行计划的好信息,但有一个问题我还没有找到答案。

计划(更具体地说是相对 CPU 成本)是仅基于模式还是基于数据库中当前的实际数据?

我试图对我的产品数据库中需要索引的位置进行一些分析,但我正在使用我自己的测试系统,该系统没有接近该领域产品所拥有的数据量。我看到一些奇怪的事情,比如在添加索引后估计 CPU 成本实际上略有上升,我想知道这是不是因为我的数据集太小了。

我正在使用 SQL Server 2005 和 Management Studio 来制定计划

sql indexing optimization sql-execution-plan

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

系统Verilog fork混乱,fork和begin之间执行的语句

请参阅此处的简化示例代码:

    process job[num_objs]; 
    // assume also, arr_obj1s (array of type obj1) and 
    // arr_obj2s (array of type obj2) are arrays of size 
    // num_objs, and the objects define a run() function
    foreach (arr_obj1s[i]) begin
        fork
            automatic int j = i;
            arr_obj1s[j].run(); // these run forever loops
            begin
                job[j] = process::self();
                arr_obj2s[j].run(); // these run finite logic
            end
        join_none
    end

    foreach (job[i]) begin
        wait (job[i] != null);
        job[i].await();
    end

    // How do we ever reach here?
Run Code Online (Sandbox Code Playgroud)

我的困惑是,调用arr_obj1s[j].run()将永远不会返回(它们永远运行循环)并且我并不完全遵循该调用在开始/结束块之外的位置的含义.永远run()执行哪个进程, …

system-verilog fork-join

5
推荐指数
2
解决办法
7471
查看次数

如何在 C++ 中进行 SystemVerilog 风格的位向量切片分配?

我正在将一些 SystemVerilog 代码移植到 SystemC/C++。我使用 std::bitset 来表示位向量,但我已经看到它无法提供访问切片的方法。

例如,如果我想使用 SystemVerilog 代码将 reg1 设置为 reg2 的位 4-8:

bit [3:0] reg1;
bit [15:0] reg2;
reg1 = reg2[7:4];
Run Code Online (Sandbox Code Playgroud)

我怎样才能用 std::bitset 做到这一点?

bitset<4> reg1;
bitset<16> reg2;
reg1[0] = reg2[4];
reg1[1] = reg2[5];
reg1[2] = reg2[6];
reg1[3] = reg2[7];
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

c++ system-verilog bitset

4
推荐指数
1
解决办法
2044
查看次数

SystemVerilog vs C++赋值:引用还是复制?

我主要有一个C++背景.我正在跟踪我正在处理的一些SystemVerilog代码中的错误,并且惊讶地发现我认为对象复制分配实际上是一个引用分配.这个简化的代码显示了我的意思:

for (int i = 0; i < max_num; ++i)
{
    var cls_obj obj1;
    obj1 = obj_array[i];

    some_function(obj1); // modifies the object passed in

    // at this point BOTH obj1 and obj_array[i] are modified.

    // some other code goes here
}
Run Code Online (Sandbox Code Playgroud)

我原以为只会obj1被修改.这是因为var关键字?在SystemVerilog中,复制分配与参考分配的确切工作原理是什么?我很难从网络搜索中查找信息.

system-verilog

4
推荐指数
1
解决办法
3004
查看次数

C/C++如何在引号之间将宏参数扩展为文本

这就是我所拥有的(message()是来自第三方库的专用日志记录功能):

#define LOG(fmt, ...) message("%s %s(): #fmt", __FILE__, __func__, __VA_ARGS__);
Run Code Online (Sandbox Code Playgroud)

所以我希望能够做到这样的事情:

LOG("Hello world")
LOG("Count = %d", count)
Run Code Online (Sandbox Code Playgroud)

并将它扩展到:

message("%s %s(): Hello world", __FILE__, __func__);
message("%s %s(): Count = %d", __FILE__, __func__, count);
Run Code Online (Sandbox Code Playgroud)

但#fmt的东西不起作用.它不会评估宏参数并打印为"#fmt".有可能做我想做的事吗?

c c++ macros

3
推荐指数
1
解决办法
1090
查看次数

将位/逻辑向量的SystemC结构安全地转换/转换为单个位/逻辑向量

我正在从SystemVerilog的代码移植到SystemC.SV很容易将位/逻辑的打包结构解释为单个位/逻辑向量.例如:

typedef struct logic {
  logic [31:0] blk1;  //63:32
  logic [4:0]  blk2;  //31:27
  logic [2:0]  blk3; //26:24
  logic [4:0]  blk4;  //23:19
  logic [2:0]  blk5;  //18:16
  logic [7:0]  blk6;  //15:8
  logic [7:0]  blk7;  //7:0
} typ_block;
...
typ_block blockA;
logic[63:0] blockB;
blockB = blockA; // no problem here
Run Code Online (Sandbox Code Playgroud)

但是使用SystemC并使用sc_lv <>模板,由于类型不匹配,这会产生编译器错误.

struct typ_block {
  sc_lv<32> blk1;  //63:32
  sc_lv<5>  blk2;  //31:27
  sc_lv<3>  blk3; //26:24
  sc_lv<5>  blk4;  //23:19
  sc_lv<3>  blk5;  //18:16
  sc_lv<8>  blk6;  //15:8
  sc_lv<8>  blk7;  //7:0
};
...
typ_block blockA;
sc_lv<64> blockB;
blockB …
Run Code Online (Sandbox Code Playgroud)

verilog system-verilog systemc

3
推荐指数
1
解决办法
769
查看次数

这个Verilog初始化语法的重要性顺序是什么?

这是一个简单的SystemVerilog问题,我很难找到答案.

在这种位数组初始化语法中,b [0]部分是分配给最高有效位还是最低有效位?

bit a[7:0];
bit b[7:0] = 8'hff;
bit c[7:0] = 8'h00;

a = {b[0], c[6:0]};
Run Code Online (Sandbox Code Playgroud)

那么[0] == 1还是[7] == 1?

verilog system-verilog

2
推荐指数
1
解决办法
1620
查看次数

在SQL脚本中考虑一个while循环

假设我有一个表amountInfo,其中包含列(id,amount1,amount2,amount3),其中amountX是money值,id是一个int值,范围从1到10以下的某个int.

目前我有一些代码大致这样做:

declare @id int, @idmax int, @amounttotal money
select @idmax = (select max(Id) from amountInfo)
while (@id <= @idmax)
begin
    select @amounttotal = sum(amount1 + amount2 + amount3) 
                          from amountinfo where id=@id
    -- do something with @amounttotal
    select @id=@id+1
end
Run Code Online (Sandbox Code Playgroud)

有没有办法在这里用某种复杂的select语句分解while循环?我对C/C++/C#编程很有经验,但SQL对我来说有点新鲜.谢谢!

编辑:基本上"--do something"部分涉及将单个@amounttotals插入另一个表.我正在运行的实际查询比这更复杂,但我希望在发布一个巨大的代码示例之前先解决这个简单的问题.

sql refactoring

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

对于这种情况,是否需要一个完整的外部联接?

我正在尝试为我正在编写的存储过程找到使用FULL OUTER JOIN的替代方法.这是场景.

两张大多数不相关的数据表,表示需要发生的事件.事件需要按时间顺序处理,两个表都有一个日期时间列.因此,我需要获取一个表,作为按日期时间排序的所有这些事件的列表(这两个日期时间列需要混合在一起).

一个小问题:有时两个表中的事件是相关的,在这种情况下,无论日期时间如何,表A中的事件都需要先行.因此,如果A有3个事件,而B有3个事件,但A和B之间只有一个相关的对,我想返回5行.如果存在不相关的数据,则会有NULL数据(这没关系,我使用NULL数据检查来确定下一步要做什么,即进程事件A或B等)

目前我看起来像这样:

    SELECT
    CASE
        WHEN A.EventDateTime IS NULL THEN B.EventDateTime
        ELSE A.EventDateTime 
    END AS SortDateTime,
    A.EventId,
    B.EventId,
    FROM A FULL OUTER JOIN B
    ON A.RelatedData=B.RelatedData
    ORDER BY SortDateTime
Run Code Online (Sandbox Code Playgroud)

sql-server outer-join

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