c# – 使用参数执行查询

前端之家收集整理的这篇文章主要介绍了c# – 使用参数执行查询前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想从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命令失败它将回滚.

猜你在找的C#相关文章