Tag: sqlcommand

c#在“using”代码块中使用Parameters执行SqlCommand

我试图通过’使用’代码块执行SQL命令,但似乎无法使用它来使用参数。 我得到错误:’参数在当前上下文中不存在’,是否有人有这个问题的可能解决方案? inheritance人我的代码: DataTable dt = new DataTable(); using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings[“ConnectionString”].ConnectionString)) using (var cmd = new SqlCommand(” SELECT FName” + ” FROM EmployeeTable ” + ” WHERE EmployeeId = @empId”, con) { Parameters.Add(new SqlParameter(“@empId”,empId)) }) { try { con.open(); dt.Load(cmd.ExecuteReader()); } catch(Exception ex) { //(snip) Log Exceptions } } return dt;

如何运行包含许多关键字的大型SQL脚本,包括使用C#的“GO”?

我正在创建一个Web应用程序,作为执行SQL复制的前端。 我有很多脚本存储在程序的属性中。 我们以第一个为例。 第一个脚本是您在发布服务器上创建发布时获得的脚本。 USE [<>] EXEC sp_replicationdboption @dbname = N'<>’, @optname = N’publish’, @value = N’true’ GO USE [<>] EXEC [<>].sys.sp_addlogreader_agent @job_login = N’XXX\Admin’, @job_password = NULL, @publisher_security_mode = 0, @publisher_login = N’Admin’, @publisher_password = N'<>’, @job_name = NULL GO USE [<>] EXEC sp_addpublication @publication = N'<>’, @description = N’Transactional publication of database ”<>” […]

以编程方式创建SQL Server表

我需要以编程方式在C#中创建一个SQL Server 2008表,以便从列列表中生成表的列(每个列名是表中行的名称) 我的问题是循环列列表的命令字符串是什么,并创建记录的表: List columnsName = [“col1″,”col2″,”col3”] 我想创建一个包含columnsName列的columnsName 。 但由于列表大小不恒定,我需要循环遍历列表以生成表列。

使用SqlCommand.Parameters进行C#更新表ASP.NET

可能重复: C#使用SqlCommand.Parameters更新表 我正在尝试使用SqlCommand更新SQL Server表,我认为这是我的T-SQL的语法错误,但这是我到目前为止: SqlCommand sqlCmd = new SqlCommand( “UPDATE yak_tickets SET email = @emailParam, subject = @subjectParam, text = @textParam, statusid = @statusIDParam, ticketClass = @ticketClassParam WHERE id = @ticketIDParam”, sqlConn); 这些参数正常工作,但是,当我运行代码时,表永远不会更新。 任何帮助将不胜感激=) 这是代码的其余部分: #region Parameters /* Parameters */ sqlCmd.Parameters.Add(“@ticketIDParam”, SqlDbType.BigInt); sqlCmd.Parameters[“@ticketIDParam”].Value = ticketID; sqlCmd.Parameters.Add(“@emailParam”, SqlDbType.NVarChar); sqlCmd.Parameters[“@emailParam”].Value = ticketToBeSubmitted.getEmail(); sqlCmd.Parameters.Add(“@subjectParam”, SqlDbType.NVarChar); sqlCmd.Parameters[“@subjectParam”].Value = ticketToBeSubmitted.getSubject(); […]

从SqlCommand对象发送什么SQL

我在基于c#的asp.net页面上有一个SqlCommand对象。 SQL和传递的参数大部分时间都在工作。 我有一个案例无效,我收到以下错误: 字符串或二进制数据将被截断。 该语句已终止。 我理解错误,但数据库中的所有列都应足够长,以容纳所有发送的内容。 我的问题, 有没有办法看到发送到数据库的实际SQL是从SqlCommand对象? 我希望能够在发生错误时通过电子邮件发送SQL。 谢谢,贾斯汀

SqlConnection / SqlCommand线程安全吗?

我目前正在创建一个WCF Web服务。 作为其工作的一部分,遗憾的是需要进行一些相当密集的计算,但幸运的是,这些计算可以在对Web服务的调用之间共享。 实际上 – 我们只需要进行一次计算,所有后来的调用都可以获得好处。 但是,由于WCF没有共享应用程序状态,因此在单实例模式下设置WCF似乎是合乎逻辑的。 (每个客户端都需要进行一些计算,迫使我们重新计算它们,这可能是正常的,或者每次调用都是站不住脚的,这是不可能的) 但是,我不太熟悉保护multithreading的代码。 我一直在阅读它,因为我们的WCF代码都没有写入共享状态(除了计算位,这很容易保护)我几乎确信我不需要改变任何东西。 但是有一个障碍 – 我们使用SqlConnection和SqlCommand与我们的后端进行通信,我不确定我是否可以指望这些是线程安全的? 编辑:我应该澄清命令/连接始终是方法的本地。 我们正在谈论一种模式: using sqlConn = new SqlConnection(…) { try { sqlConn.Open() } catch () { throw new FaultException(); } var cmd = new SqlCommand(“Some SQL”, sqlConn); var reader = cmd.ExecuteReader(); //Read the stuff reader.Close(); //Return something } 结束编辑 我在MSDN上查找了SqlCommand类: http : //msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.aspx其中说:“任何公共静态(在Visual […]

sqlparameter性能不佳

我有一个Web服务,所以处理程序一直被多次调用。 在里面我创建了SqlConnection和SqlCommand。 我必须执行大约7个不同的命令。 不同的命令需要各种参数,所以我只需添加一次: command.Parameters.Add(new SqlParameter(“@UserID”, userID)); command.Parameters.Add(new SqlParameter(“@AppID”, appID)); command.Parameters.Add(new SqlParameter(“@SID”, SIDInt)); command.Parameters.Add(new SqlParameter(“@Day”, timestamp.Date)); command.Parameters.Add(new SqlParameter(“@TS”, timestamp)); 然后在执行期间我只需更改CommandText prorerty,然后调用ExecuteNonQuery(); 或ExecuteScalar(); 我面临性能问题。 例如,小调试和分析显示该命令 command.CommandText = “SELECT LastShowTS FROM LogForAllTime WHERE UserID = @UserID”; 平均需要大约50毫秒。 如果我将其更改为: command.CommandText = “SELECT LastShowTS FROM LogForAllTime WHERE UserID = ‘” + userID.Replace(“\'”, “”) + “‘”; 然后它只需要1ms的平均值! 我只是无法弄清楚在哪里调查问题。

SqlCommand()ExecuteNonQuery()截断命令文本

我正在构建一个自定义数据库部署实用程序,我需要读取包含sql脚本的文本文件并对数据库执行它们。 很简单的东西,到目前为止一切都很好。 但是我遇到了一个障碍,文件的内容被成功完整地读取,但是一旦传入SqlCommand然后用SqlCommand执行.ExecuteNonQuery只执行部分脚本。 我启动了Profiler并确认我的代码没有传递所有脚本。 private void ExecuteScript(string cmd, SqlConnection sqlConn, SqlTransaction trans) { SqlCommand sqlCmd = new SqlCommand(cmd, sqlConn, trans); sqlCmd.CommandType = CommandType.Text; sqlCmd.CommandTimeout = 9000000; // for testing sqlCmd.ExecuteNonQuery(); } // I call it like this, readDMLScript contains 543 lines of T-SQL string readDMLScript = ReadFile(dmlFile); ExecuteScript(readDMLScript, sqlConn, trans);

是否可以使用SqlParameters获取SqlCommand的已解析文本?

我要做的是创建一些带参数的任意sql命令,设置参数的值和类型,然后返回解析的sql命令 – 包含参数。 我不会直接对sql数据库运行此命令,因此不需要连接。 因此,如果我运行下面的示例程序,我希望看到以下文本(或类似的东西): WITH SomeTable (SomeColumn) AS ( SELECT N’:)’ UNION ALL SELECT N’>:o’ UNION ALL SELECT N’^_^’ ) SELECT SomeColumn FROM SomeTable 示例程序是: using System; using System.Data; using System.Data.SqlClient; namespace DryEraseConsole { class Program { static void Main(string[] args) { const string COMMAND_TEXT = @” WITH SomeTable (SomeColumn) AS ( SELECT N’:)’ […]

数据适配器与Sql命令

哪一个在执行ms-sql数据库的insert语句时会更好: Sql DataAdapter或SQL命令对象? 哪个更好, inserting only one row并inserting multiple rows ? 代码使用的一个简单示例: SQL命令 string query = “insert into Table1(col1,col2,col3) values (@value1,@value2,@value3)”; int i; SqlCommand cmd = new SqlCommand(query, connection); // add parameters… cmd.Parameters.Add(“@value1”,SqlDbType.VarChar).Value=txtBox1.Text; cmd.Parameters.Add(“@value2”,SqlDbType.VarChar).Value=txtBox2.Text; cmd.Parameters.Add(“@value3”,SqlDbType.VarChar).Value=txtBox3.Text; cmd.con.open(); i = cmd.ExecuteNonQuery(); cmd.con.close(); SQL数据适配器 DataRow dr = dsTab.Tables[“Table1”].NewRow(); DataSet dsTab = new DataSet(“Table1”); SqlDataAdapter adp = new SqlDataAdapter(“Select […]