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》