小编Mad*_* Zu的帖子

使用块存储过程

我正在尝试习惯使用C#中的"使用"块,但我很难理解何时应该使用它们.

这是一个例子.

我的原始代码,没有using块:

SqlConnection conn = new SqlConnection(cCon.getConn());
    SqlCommand cmd = new SqlCommand("sp_SaveSomething", conn);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add(new SqlParameter("@x", xxx));
    cmd.Parameters.Add(new SqlParameter("@ORG", ORG));        
    try
    {
        conn.Open();
        cmd.ExecuteNonQuery();
    }
    catch (Exception ex)
    { }
    finally
    {
        conn.Close();
    }
Run Code Online (Sandbox Code Playgroud)

但我真的应该这样做吗?或者我应该使用(SqlConnection conn = new SqlConnection(cCon.getConn()))?请帮我理解这个.我最初这样做的方式错了吗?

SqlConnection conn = new SqlConnection(cCon.getConn());
   using( SqlCommand cmd = new SqlCommand("sp_SaveSomething", conn))
{
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add(new SqlParameter("@x", xxx));
    cmd.Parameters.Add(new SqlParameter("@ORG", ORG));        
    try
    {
        conn.Open();
        cmd.ExecuteNonQuery();
    }
    catch (Exception ex)
    { }
    finally
    { …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net stored-procedures

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

如何从Web用户控件提交数据

我有一个表单,我放在Web用户控件上,但"提交"按钮位于父页面上.

表单包含用户信息.管理员可以显示相同的表单来编辑用户以及用户注册和更新配置文件.

我想在这3个地方只显示一个表格.

管理页面将提供更多信息,以及"用户信息"控件.

如何从父页面引用控制页面上的项目?

我做错了吗?

.net vb.net asp.net

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

REgular表达式 - 允许破折号?

我有以下javascript,不允许用户在字段中输入任何特殊字符,但我确实想要一个例外并允许短划线( - ):

function Validate(txt)
{
    txt.value = txt.value.replace(/[^a-zA-Z 0-9\n\r]+/g, '');
}
Run Code Online (Sandbox Code Playgroud)

如何修改它以将短划线添加到允许列表?

regex

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

循环遍历列表并删除项目时,集合被修改错误

我有以下内容:

 tempLabID = lstLab;
                    foreach (string labID in lstLab)
                    {
                        if (fr.GetFileRecipients(fsID).Contains(labID))
                        {
                            tempLabID.Remove(labID);
                        }
                    }   
Run Code Online (Sandbox Code Playgroud)

当我调试并观察lstLab并且我得到tempLabID.remove()时,它将lstLab从1更改为0,然后当它返回到foreach时,我收到一条错误消息,说明该集合已被修改.

我无法理解为什么会这样.我正在修改一个不同的集合.

.net c# asp.net

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

仅在传入值时执行Where条件

我有以下LINQ语句wheredate和a上执行LabID.

我正在传递LABS列表和日期,但是它们不是必需的,我可能只传递日期,没有实验室,在这种情况下,我希望获得该特定实验室的所有实验室的结果.

这是我现在拥有的:

List<dExp> lstDatExp = (from l in ctx.dExp.Include("datLab")
                        where values.Contains(l.datL.Lab_ID)
                            && l.reportingPeriod == reportingPeriod
                        select l).ToList<dExp>();
Run Code Online (Sandbox Code Playgroud)

但如果传入的值不存在则会中断.如何更改此选项以确保我的两个where语句都是可选的?

c# linq

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

比较LINQ中的两个计数

嗨有一个简单的查询,将所有发出的请求与已下载的请求进行比较.

我有一个像这样完美的tsql:

select case when (select COUNT(*) from FileRecipient where File_ID = 3 and downloaded = 'Y') 
= (select COUNT(*) from FileRecipient where File_ID = 3) then 'Y' else 'N' end
Run Code Online (Sandbox Code Playgroud)

但是想在LINQ中做到这一点.

任何和所有的帮助将不胜感激.我尝试了下面的内容,但显然我还有很长的路要走.这只是给了我两个计数中的第一个.我需要做两个单独的陈述来获得第二个吗?

public static bool DownloadedByAll(int fsID)
{
    using (SEntities ctx = CommonS.GetSContext())
    {
        var result = (from fr in ctx.FileRecipients
                      where fr.File_ID == fsID && fr.downloaded == "Y"
                      select fr.Recipient_ID).Count();
    }
}
Run Code Online (Sandbox Code Playgroud)

或者我只是更简单地在实体框架中使用tsql?

.net c# linq asp.net entity-framework

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

将代码中的数据类型nvarchar转换为存储过程中的datetime时出错

从C#调用存储过程时出现以下错误.

参数在代码中定义为:

 if (repRIS.Length > 0)
    command.Parameters.AddWithValue("@repRIS", repRIS);
 else
    command.Parameters.AddWithValue("@repRIS", DBNull.Value);
  command.Parameters.Add("@invDt", OleDbType.Date).Value = invDate;
Run Code Online (Sandbox Code Playgroud)

我已经注释掉了存储过程中的所有内容,现在只有以下内容:

ALTER PROCEDURE [dbo].[SearchDates]
    -- Add the parameters for the stored procedure here
     @invDt datetime,
     @repRIS varchar(10) ,

AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

select this, that, and, the, other from myTableName ird
where
     ird.RIS = COALESCE(@repRIS, ird.RIS) 
     and ird.InventoryDate = @invDt
END
Run Code Online (Sandbox Code Playgroud)

InventoryDate的类型为数据库中的DateTime.

当我从SQL MS运行SP时,它会产生没有问题的结果,但是,当使用应用程序调用它时,我收到以下错误消息

将数据类型nvarchar转换为datetime时出错

我注意到它从SQLConnection切换到OLEDBConnection后开始发生.我还没有证实这一点.(我不得不切换到遵守我之前写的其他应用程序的方式)

更新:当我在文本框中输入9/30/2018的值时,它将被传递到存储过程中:{9/30/2018 …

.net c# sql sql-server oledb

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

条件显示

我在数据库中有一个"活动"字段,其中包含"活动"和"非活动"字样

我如何选择,仅显示Y和N,具体取决于该字段中的"活动"/"非活动"措辞?

sql

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

SQL Server 2005存储过程

我正在编写一个存储过程来更新事务表.

我将一次更新一种交易类型(装运,收货或处置)

如果我正在更新货件,我将传入一个值,并将另外两个留空.

我如何编写存储过程,以便它只在我传入的值不是NULL(或0,更容易)时更新字段,并保留其他的原样?

这是我现在的位置:

CREATE PROCEDURE [dbo].[sp_UpdateTransaction] 
    -- Add the parameters for the stored procedure here
    @ID int,
    @disposalID int,
    @shipID int,
    @recID int,
as
begin
   update tblX
   set
     disposalID = COALESCE(@disposalID, disposalID)
     receiptID = COALESCE(@recID, receiptID)
     shipmentID = COALESCE(@shipID,shipmentID)
   where ID = @sID 
END 
Run Code Online (Sandbox Code Playgroud)

COALESCE 似乎不起作用,因为我一直在收到错误,是否还有其他功能可以用来实现这一目标?

我越来越:

'receiptID'附近的语法不正确.

我不明白为什么:(

谢谢!

sql sql-server stored-procedures sql-server-2005 coalesce

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

SQL触发器 - 已删除或已更新?或者别的什么?

我想弄清楚我需要在这里使用:删除,插入或更新.

基本上.

当主表更新时,我需要将一些数据写入历史表,并且只有当状态从某些内容更改为挂起或活动时才需要.

这就是我现在拥有的:

ALTER TRIGGER [dbo].[trg_SourceHistory]  ON [dbo].[tblSource]
FOR UPDATE AS  
    DECLARE @statusOldValue char(1) 
    DECLARE @statusNewValue char(1)

    SELECT @statusOldValue = statusCode FROM deleted 
    SELECT @statusNewValue= statusCode FROM updated

    IF (@statusOldValue <> @statusNewValue) AND 
       (@statusOldValue = 'P' or @statusOldValue = 'A')
    BEGIN TRY
       INSERT * INTO tblHistoryTable)  
           select * from [DELETED]
Run Code Online (Sandbox Code Playgroud)

所以我希望新数据保留在主表中,历史表将被覆盖的内容更新...现在它只是复制相同的信息.所以更新后,我的两个表都有相同的数据.

sql sql-server triggers sqltransaction

0
推荐指数
2
解决办法
5343
查看次数

经典ASP - 插入SQL语句 - 哪个更好?

我有一个不带任何参数的插入.

这是一种更好的做事方式?

Set writeConn  = Server.CreateObject("ADODB.Connection") 
        Call OpenConnect(writeConn)     

        Set objCommand = Server.CreateObject("ADODB.Command")
        objCommand.ActiveConnection = writeConn
        objCommand.CommandText = insstmt
        objCommand.Execute()
         writeConn.Close()
Run Code Online (Sandbox Code Playgroud)

要么

Set writeConn  = Server.CreateObject("ADODB.Connection") 
        Call OpenConnect(writeConn)     


        writeConn.Execute(InsStmt)
        writeConn.Close()
Run Code Online (Sandbox Code Playgroud)

他们看到做同样的事情......谢谢!

t-sql asp-classic

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

从函数中传回变量?

我正在看一些古老的代码,并有以下代码行:

strResult = strResult + "<table>" & vbLf
        output = PrintTableHead("Field Office Code","1")
        strResult = strResult + PrintTableHead("Field Office Code","1")
        strResult = strResult + "<tr>" & vbLf


Function PrintTableHead( TheTitle ,  TheColSpan ) 

    strResult = "<tr><th colspan="
    strResult = strResult + TheColSpan
    strResult = strResult + " BGCOLOR=""#004D95"" align=center>" & vbLf
    strResult = strResult + "<font face=""Time New Roman"" color=""#ffffff"" SIZE=3>" & vbLf
    strResult = strResult + TheTitle
    strResult = strResult + "</font></th></tr>" & vbLf

End Function
Run Code Online (Sandbox Code Playgroud)

当我尝试调试strResult时.它不会附加pIrntTableHead函数的内容.为什么这不起作用?我怎样才能重写这个以正确追加?

所以在 strResult …

asp-classic

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

公共财产还是公共领域?

我正在创建一个简单的User类,如果我使用私有字段的公共属性只使用公共字段,这是否重要?

这是我的意思的一个例子:

public class clsUser
{
private string name;
private string lName;

    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name= value;
        }
    }

    public string LName
    {
        get
        {
            return lName;
        }
        set
        {
            lName= value;
        }
    }

public clsUser(string userID)
    {

//get the user id here and set the properties

        this.name= getName(userID);
        this.lName= getLName(userID);      
    }

}
Run Code Online (Sandbox Code Playgroud)

或者我可以做

public string name;
public string lName;
Run Code Online (Sandbox Code Playgroud)

public 现在担心输入所有这些:

public string Name
{
    get
    {
        return name;
    }
    set …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net

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