小编som*_*ore的帖子

SQL Server查询 - 使用DISTINCT选择COUNT(*)

在SQL Server 2005中,我有一个表cm_production,其中列出了所有已投入生产的代码.该表有ticket_number,program_type,program_name和push_number以及其他一些列.

目标:按程序类型和推送号计算所有DISTINCT程序名称

到目前为止我所拥有的是:

DECLARE @push_number INT;
SET @push_number = [HERE_ADD_NUMBER];

SELECT DISTINCT COUNT(*) AS Count, program_type AS [Type] 
FROM cm_production 
WHERE push_number=@push_number 
GROUP BY program_type
Run Code Online (Sandbox Code Playgroud)

这让我在那里,但它计算所有的程序名称,而不是不同的程序名称(我不希望它在该查询中做).我想我无法绕过如何告诉它只计算不同的程序名而不选择它们.或者其他的东西.

sql t-sql sql-server sql-server-2005

402
推荐指数
5
解决办法
87万
查看次数

无法理解C#中的用户控件

我是usercontrols的新手,到目前为止只创建了一个,所以请耐心等待.我今天一直在阅读用户控件应该是自包含的,而不是依赖父容器中的任何信息.我得到了那个部分,但我理解的是那种围绕这个原则设计我的程序的"正确"方法.

我在C#中创建一个Web表单,其中有一个页面在该页面中有一个usercontrol.我在其ascx文件中创建了usercontrol并将其拖入我的aspx页面.usercontrol是几个日期框和gridview,用于显示SQL存储过程的结果.

我真的想重用这个控件,但我无法弄清楚如何"告诉"用户控件我想要为我所在的特定页面运行哪些存储过程而不违反"不依赖"父容器"规则.

谢谢

c# user-controls design-principles

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

我的SQLParameter没有正确传递NULL

我有这个C#webform,它有一个日期选择器框.如果日期设置为空(默认值),我希望它将NULL传递给数据库.这发生在我的参数化查询中.

SqlParameter CMActionDate = new SqlParameter();
CMActionDate.ParameterName = "@ActionDate";
if (ActionDate.Equals(""))
  {
      CMActionDate.Value = System.Data.SqlTypes.SqlDateTime.Null;
  }
  else
  {
      CMActionDate.Value = ActionDate;
  }
Run Code Online (Sandbox Code Playgroud)

当我打开调试时,我看到日期确实是"",所以它进入IF语句并将actiondate.value设置为{Null},就像我认为的那样.

然而.

然后当它执行非查询时,我点击放大镜看到这个:

UPDATE table SET [action_date] = '' WHERE [id] = 2488
Run Code Online (Sandbox Code Playgroud)

我想看到的是:

UPDATE table SET [action_date] = 'Null' WHERE [id] = 2488
Run Code Online (Sandbox Code Playgroud)

由于action_date从未真正设置为NULL,因此datetime字段中的值将恢复为"01/01/1900 12:00:00 AM",这本身就很痛苦.

我已经尝试将CMActionDate.Value设置为以下值无效(我得到与上面相同的结果.):

  • DBNull.Value;
  • "空值";
  • SqlDateTime.Null;
  • 空值;

救命.

编辑

也许我不清楚?是的,当然参数化查询如下所示:

"UPDATE CM_Codebase SET [action_date] = '" + @ActionDate + "' WHERE [id] = " + @CM_id + "";
Run Code Online (Sandbox Code Playgroud)

但是当我在VS中调试这个东西时,我在ExecuteNonQuery()之前放了一个断点; 所以我可以看到它试图运行的SQL.在那里,我看到了实际的SQL,并看到action_date =''的位置.

这有帮助吗?

.net c# sql query-parameters .net-2.0

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