• 执行带参数的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》
  • 相关阅读:
    所谓的底层问题
    字符流与字节流
    字节和字符,对信息进行编码
    Asp.net和数据库的一些概念
    谈.NET,由编译器开始谈起
    Extjs中的dom,Ext.Element和Ext.Component对象的关系
    WCF和Delphi通信时序列化的问题
    认真的考虑了下领域模型,发现设计是最难的部分。书上的例子各个对象职责划分的不错,可惜能看懂不代表能设计出。
    MS100 [011020]
    MS100[001]
  • 原文地址:https://www.cnblogs.com/java20130722/p/3207229.html
Copyright © 2020-2023  润新知