--ExecuteNonQuery()
对连接执行 Transact-SQL 语句并返回受影响的行数,如果SQL语句是对数据库的记录进行操作(如记录的增加、删除和更新),那么方法将返回操作所影响的记录条数。
--ExecuteScalar()
执行查询,并返回查询所返回的结果集中第一行的第一列。 忽略其他列或行。该方法所返回的结果为object类型,在使用之前必须强制转换为所需的类型。
--ExecuteReader()
将 CommandText 发送到 Connection,并生成 SqlDataReader。DataReader对象提供了游标形式的读取方式,当从结果行中读取了一行,则游标会继续读取到下一行。通过read方法可以判断数据是否还有下一行,如果存在数据,则继续运行返回true,如果没有数据,则返回false。
创建SQL Server数据库、数据表:
USE master; GO --创建数据库 IF NOT EXISTS(SELECT * FROM dbo.sysdatabases WHERE [name]='TestDB') CREATE DATABASE TestDB; GO --使用数据库 USE TestDB; GO --创建用户表 IF EXISTS(SELECT * FROM sysobjects WHERE [name]='Users') DROP TABLE [Users] GO CREATE TABLE [Users]( [Id] [int] IDENTITY(1,1),--主键 [Name] [nvarchar](50) NOT NULL,--姓名 [Sex] [nvarchar](10),--性别 PRIMARY KEY([Name]) ); GO INSERT INTO [Users]([Name],[Sex]) VALUES ('Alice','Female'); INSERT INTO [Users]([Name],[Sex]) VALUES ('Amy','Female'); INSERT INTO [Users]([Name],[Sex]) VALUES ('Bruce','Male');
using System; using System.Data; using System.Data.SqlClient; namespace SqlServerDemo { class Program { static void Main(string[] args) { string connectionString = "Data Source=127.0.0.1,1433;Initial Catalog=TestDB;uid=sa;pwd=123456"; string sqlstring = "SELECT * FROM [Users] WHERE [Sex]=@Sex;"; SqlConnection conn = new SqlConnection(connectionString); SqlCommand cmd = new SqlCommand(); try { conn.Open(); cmd.Connection = conn; cmd.CommandText = sqlstring; cmd.CommandType = System.Data.CommandType.Text; // 绑定参数, 方式一 cmd.Parameters.AddWithValue("@Sex", "Male"); //// 绑定参数, 方式二 //cmd.Parameters.Add("@Sex", SqlDbType.NVarChar); //cmd.Parameters["@Sex"].Value = "Male"; SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); while (reader.Read()) { if (reader.HasRows) { Console.WriteLine(reader.GetInt32(0) + " - " + reader.GetString(1) + " - " + reader.GetString(2)); } } } catch { if (conn.State != ConnectionState.Closed) { conn.Close(); } throw; } Console.Read(); } } }