c# – 使用参数执行查询
发布时间:2020-12-15 06:18:10 所属栏目:百科 来源:网络整理
导读:我想从C#执行一个.sql脚本.基本上脚本将一行插入到几个不同的表中. 关键是我有C#代码中需要传递给.sql查询的值.这些值将在程序执行期间收集. 这是我要从C#代码执行的查询: INSERT INTO [DB].[dbo].[User] ([Id],[AccountId],[FirstName],[LastName],[JobTit
我想从C#执行一个.sql脚本.基本上脚本将一行插入到几个不同的表中.
关键是我有C#代码中需要传递给.sql查询的值.这些值将在程序执行期间收集. 这是我要从C#代码执行的查询: INSERT INTO [DB].[dbo].[User] ([Id],[AccountId],[FirstName],[LastName],[JobTitle],[PhoneNumber] ) VALUES ('00A640BD-1A0D-499D-9155-BA2B626D7B68','DCBA241B-2B06-48D7-9AC1-6E277FBB1C2A','Mark','Wahlberg','Actor','9889898989']) GO 这些值将不时变化,即它们被捕获在C#代码中,需要传递. 任何人都可以帮助我这样做.我正在学习C#和SQL.非常感谢. 解决方法
您可以在这里打开自己的高达
SQL injection attacks,所以最好的做法是使用参数:
using (SqlConnection dbConn = new SqlConnection(connectionString)) { dbConn.Open(); using (SqlTransaction dbTrans = dbConn.BeginTransaction()) { try { using (SqlCommand dbCommand = new SqlCommand("insert into [DB].[dbo].[User] ( [Id],[PhoneNumber] ) values ( @id,@accountid,@firstname,@lastname,@jobtitle,@phonenumber );",dbConn)) { dbCommand.Transaction = dbTrans; dbCommand.Parameters.Add("id",SqlType.VarChar).Value = id; dbCommand.Parameters.Add("accountid",SqlType.VarChar).Value = accountId; dbCommand.Parameters.Add("firstname",SqlType.VarChar).Value = firstName; dbCommand.Parameters.Add("lastname",SqlType.VarChar).Value = lastName; dbCommand.Parameters.Add("jobtitle",SqlType.VarChar).Value = jobTitle; dbCommand.Parameters.Add("phonenumber",SqlType.VarChar).Value = phoneNumber; dbCommand.ExecuteNonQuery(); } dbTrans.Commit(); } catch (SqlException) { dbTrans.Rollback(); throw; // bubble up the exception and preserve the stack trace } } dbConn.Close(); } 这是beginners with ADO.Net的好文章 编辑 – 作为一个额外的信息,我添加了一个transaction,所以如果SQL命令失败它将回滚. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |