我正在尝试习惯使用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) 我有一个表单,我放在Web用户控件上,但"提交"按钮位于父页面上.
表单包含用户信息.管理员可以显示相同的表单来编辑用户以及用户注册和更新配置文件.
我想在这3个地方只显示一个表格.
管理页面将提供更多信息,以及"用户信息"控件.
如何从父页面引用控制页面上的项目?
我做错了吗?
我有以下javascript,不允许用户在字段中输入任何特殊字符,但我确实想要一个例外并允许短划线( - ):
function Validate(txt)
{
txt.value = txt.value.replace(/[^a-zA-Z 0-9\n\r]+/g, '');
}
Run Code Online (Sandbox Code Playgroud)
如何修改它以将短划线添加到允许列表?
我有以下内容:
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时,我收到一条错误消息,说明该集合已被修改.
我无法理解为什么会这样.我正在修改一个不同的集合.
我有以下LINQ语句where在date和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语句都是可选的?
嗨有一个简单的查询,将所有发出的请求与已下载的请求进行比较.
我有一个像这样完美的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?
从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 …
我正在编写一个存储过程来更新事务表.
我将一次更新一种交易类型(装运,收货或处置)
如果我正在更新货件,我将传入一个值,并将另外两个留空.
我如何编写存储过程,以便它只在我传入的值不是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'附近的语法不正确.
我不明白为什么:(
谢谢!
我想弄清楚我需要在这里使用:删除,插入或更新.
基本上.
当主表更新时,我需要将一些数据写入历史表,并且只有当状态从某些内容更改为挂起或活动时才需要.
这就是我现在拥有的:
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)
所以我希望新数据保留在主表中,历史表将被覆盖的内容更新...现在它只是复制相同的信息.所以更新后,我的两个表都有相同的数据.
我有一个不带任何参数的插入.
这是一种更好的做事方式?
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)
他们看到做同样的事情......谢谢!
我正在看一些古老的代码,并有以下代码行:
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 …
我正在创建一个简单的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)