执行带参数的sql语句

using System;
using System.Data;
using System.Data.SqlClient;

namespace CommandParameters
{
    class CommandParameters
    {
        static void Main()
        {
            // set up rudimentary data
            string fname = "Zachariah";
            string lname = "Zinn";

            SqlConnection conn = null;

            // define scalar query
            string sqlqry = @"
                            select
                               count(*)
                            from
                               employees ";

            // define insert statement
            string sqlins = @"
                            insert into employees
                            (
                               firstname,
                               lastname
                            )
                            values(@fname, @lname) ";

            // define delete statement
            string sqldel = @"
                            delete from employees
                            where
                               firstname = @fname
                              and
                               lastname = @lname ";

            try
            {
                //创建连接。
                conn = new SqlConnection(@"
                                    server = .;
                                    integrated security = true;
                                    database = northwind ");
                // create commands
                SqlCommand cmdqry = new SqlCommand(sqlqry, conn);
                SqlCommand cmdnon = new SqlCommand(sqlins, conn);

                //对于有参数的非查询语句需要先调用SqlCommand.Prepare();
                cmdnon.Prepare();
                // add parameters to the command for statements
                cmdnon.Parameters.Add("@fname", SqlDbType.NVarChar, 10);
                cmdnon.Parameters.Add("@lname", SqlDbType.NVarChar, 20);

                //打开数据库连接。
                conn.Open();

                //SqlCommand.ExecuteScalar()返回影响的行数。
                Console.WriteLine(
                           "Before INSERT: Number of employees {0}\n"
                          , cmdqry.ExecuteScalar() );

                // execute nonquery to insert an employee
                cmdnon.Parameters["@fname"].Value = fname;
                cmdnon.Parameters["@lname"].Value = lname;
                Console.WriteLine(
                               "Executing statement {0}"
                             , cmdnon.CommandText );
               
                //执行了插入语句。
                cmdnon.ExecuteNonQuery();

                Console.WriteLine(
                   "After INSERT: Number of employees {0}\n"
                  , cmdqry.ExecuteScalar()
                );

                //把cmdnon对应的sql语句设置为sqldel。
                //注意参数未变。
                cmdnon.CommandText = sqldel;
                Console.WriteLine(
                   "Executing statement {0}"
                 , cmdnon.CommandText
                );
                cmdnon.ExecuteNonQuery(); //执行删除语句。
                Console.WriteLine(
                   "After DELETE: Number of employees {0}\n"
                  , cmdqry.ExecuteScalar()
                );
            }
            catch (SqlException ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                conn.Close();
                Console.WriteLine("Connection Closed.");
            }
        }
    }
}
//所有代码来自书籍《Begining C# Databases From Novice to Professional》
原文地址:https://www.cnblogs.com/java20130722/p/3207229.html