Tag: 存储过程

带参数的C#存储过程

我在我的应用程序中收到错误,我无法弄清楚如何解决它。 这是代码: SqlConnection myConnection = new SqlConnection(ConfigurationManager.ConnectionStrings[“DBConnection”].ConnectionString); myConnection.Open(); SqlCommand cmd = new SqlCommand(“SELECT ServerIP FROM Servers”, myConnection); SqlDataReader rdr = cmd.ExecuteReader(); if (rdr.HasRows) { while (rdr.Read()) { string serverIP = rdr[“ServerIP”].ToString(); ScheduledTasks st = new ScheduledTasks(@”\\” + serverIP); string[] taskNames = st.GetTaskNames(); foreach (string name in taskNames) { Task t = st.OpenTask(name); var status = […]

通过ODBC执行参数化SQL StoredProcedure

在C#WinForms应用程序中,我必须在MS SQL Express服务器上执行参数化存储过程。 数据库连接工作,过程工作,但我收到一条错误消息: 42000:缺少参数’@KundenEmail’ 虽然我确定我正确添加了参数。 也许你们中的一些人可以看看 – 我不知道该怎么搜索…… OdbcConnection ODBCConnection = new OdbcConnection(); try { ODBCConnection.ConnectionString = ODBCConnectionString; ODBCConnection.Open(); } catch (Exception DatabaseConnectionEx) { if (ODBCConnection != null) ODBCConnection.Dispose(); // Error Message return null; } OdbcParameter ODBCParameter = new OdbcParameter(“@KundenEmail”, OdbcType.NChar, 50); ODBCParameter.Value = KundenEmail; OdbcCommand ODBCCommand = new OdbcCommand(“getDetailsFromEmail”, ODBCConnection); ODBCCommand.CommandType = CommandType.StoredProcedure; […]

由于没有Sqlserver数组参数,最好的方法是什么?

我需要在sqlserver中创建多个记录,每个记录在列A中具有相同的值,但在列B中具有唯一值。我在列中具有列B的值。 我正在使用VS2008,aspnet,c#3.5,sqlserver 2005。 我最好过 选项1。 从c#代码中调用sqlserver中的存储过程,然后在tsql中执行存储过程中的所有处理工作? 这将涉及将c#数组中的所有值组合成一个逗号分隔的字符串,并将字符串作为参数传递给tsql,然后循环并将字符串拆分为单个值并为每个值插入记录,所有这些都在存储过程中。 从我所看到的,如果需要,这将涉及轻松回滚,但在tsql中非常笨拙的字符串处理。 要么 选项2。 在c#中循环并将数据作为sqlparams从c#一次传递到存储过程以插入每个记录。 即,foreach(myarray中的int键)…插入一条记录 我可以在睡眠中执行此代码,但如果在处理过程中发生了某些事情,我将如何能够回滚? 我应该在一个单独的connection.open和connection.close中进行循环吗? 这样做有没有其他选择?

通过Entity Framework将表值类型传递给SQL Server存储过程

我在SQL Server中创建了一个用户定义的表类型: CREATE TYPE dbo.TestType AS TABLE ( ColumnA int, ColumnB nvarchar(500) ) 我正在使用存储过程将记录插入数据库: create procedure [dbo].[sp_Test_CustomType] @testing TestType READONLY as insert into [dbo].[myTable] select ColumnA, ColumnB from @testing 我想使用EF来执行此存储过程,但问题是:如何将用户定义的表传递给存储过程? 我尝试将存储过程添加到模型中,但我无法在更新的上下文中找到所需的存储过程。 我要做的是对表执行批量插入,这是我目前使用的方法: List itemToInsertToDB = //fetchItems; foreach(items i in itemToInsertToDB) { context.sp_InsertToTable(i.ColumnA, i.ColumnB) } 目前,我使用foreach循环遍历列表以将项目插入到DB,但如果列表中有很多项目,那么就会出现性能问题,因此,我正在考虑将列表传递给存储过程并在里面插入。 那么如何解决这个问题呢? 或者有更好的方法吗?

存储过程返回到C#.Net中的DataSet

我想从存储过程返回虚拟表,我想在c#.net中的数据集中使用它。 我的过程有点复杂,无法找到如何返回表并将其设置在数据集中 这是我修改的程序: ALTER PROCEDURE [dbo].[Procedure1] @Start datetime, @Finish datetime, @TimeRange time AS BEGIN SET NOCOUNT ON; declare @TimeRanges as TABLE (SessionStart datetime, SessionEnd datetime); with TimeRanges as ( select @Start as StartTime, @Start + @TimeRange as EndTime union all select StartTime + @TimeRange, EndTime + @TimeRange from TimeRanges where StartTime < @Finish ) select […]

从Windows窗体异步执行存储过程然后断开连接?

我从我的应用程序调用存储过程,可能需要30分钟才能执行。 我不想让我的用户在整个时间段内打开应用程序。 所以我想打电话给sproc,让它飞起来,让他们关闭应用程序然后再回来。 我怎样才能做到这一点?

LINQ to SQL包含存储过程和用户​​定义的表类型参数

我在SQL Server 2008中使用LINQ to SQL和存储过程。除了一个问题,一切都很好。 L2S无法为用户定义的表类型作为参数生成存储过程的方法。 dbml设计面板中的方法签名使用对象作为参数类型而不是表类型,当我尝试编译时出现错误: Error: DBML1005: Mapping between DbType ‘Structured’ and Type ‘System.Object’ in Parameter ‘ParaName’ of Function ‘dbo.StoredProcName’ is not supported. 有办法解决这个问题吗? 我不想回到传统的ADO.NET数据访问。

如何识别C#中是否成功执行SQL作业

我有一个C#方法来执行SQL作业。 它成功执行SQL作业。 而且代码非常完美。 我正在使用标准SQL存储过程msdb.dbo.sp_start_job 。 这是我的代码.. public int ExcecuteNonquery() { var result = 0; using (var execJob =new SqlCommand()) { execJob.CommandType = CommandType.StoredProcedure; execJob.CommandText = “msdb.dbo.sp_start_job”; execJob.Parameters.AddWithValue(“@job_name”, “myjobname”); using (_sqlConnection) { if (_sqlConnection.State == ConnectionState.Closed) _sqlConnection.Open(); sqlCommand.Connection = _sqlConnection; result = sqlCommand.ExecuteNonQuery(); if (_sqlConnection.State == ConnectionState.Open) _sqlConnection.Close(); } } return result; } 这是在作业内执行的sp ALTER PROCEDURE […]

使用存储过程时哪种ORM最佳

我有Business对象(DEVELOPERS WRITE)和一些SPROCS(DBA WRITE) 任何人都可以推荐一个好的对象映射器来处理这种设置。 我尝试了代码匠和nhibernate并遇到了麻烦。 我不介意我的ORM是免费的还是付费的。

EntityFramework VS纯Ado.Net

EF是如此广泛使用的员工,但我没有意识到我应该如何使用它。 我用不同的方法在不同的项目上遇到了很多关于ef的问题。 所以有些问题汇集在我脑海里。 答案让我使用纯粹的ado.net和存储过程。 所以问题是: 如何在n层应用程序中处理EF? 例如,我们有一些带有EF的DAL。 我看到很多文章和项目使用存储库,单元工作模式作为EF的某种抽象。 我认为这样的方法会杀死大多数提高开发速度并导致一些事情的好处: 重新映射EF负载导致某些DTO杀死性能(调用一些select来获取表数据 – 第一个循环,第二个循环 – 将结果映射到ef生成的某些复合类型,next – 使用linq过滤映射数据,最后映射它某些DTO)。 完全重新映射到DTO是最大的efs利益之一的杀手; 要么 导致EF(和它的版本 )和应用程序之间的强大凝聚力。 这将是类似于2层应用程序与dal和演示文稿与bll或dal与bll和演示文稿。 我想这不是最好的做法。 除了映射之外,还有与之前的事情相同的加载过程,因此再次出现性能问题。 我们可以尝试使用EF作为DAL而不需要任何抽象。 但我们会以其他方式得到类似的问题。 我应该为每个app \ thread \ atomic操作使用一个上下文吗? 使用方法 – 每个app \ thread一个上下文可能略微提高性能和调用导航属性的可能性,但我们遇到另一个问题 – 更新此上下文并在上下文中增加加载的数据,我也不确定每个app一个dbcontext的并发性线。 使用每个操作的上下文将导致我们将ef结果重新映射到我们的DTO。 所以你看到我们再次回到问题1。 我们可以尝试仅使用EF + SP吗? 我们再次提出以前的问题。 如果不使用大部分function,使用ef的原因是什么? 所以,EF是开始项目的好方法。 当我们几乎没有屏幕和粗暴操作时,它非常方便。 但接下来呢? 所有这些文字都只是未分类的想法。 我知道纯粹的ado.net会带来另一种挑战。 那么,您对此主题有何看法?