加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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命令失败它将回滚.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读