SqlCommand()方法
SqlCommand cmd = new SqlCommand("insert into mynews value ('插入一条新数据')", con);
Command对象的构造函数的参数有两个,一个是需要执行的SQL语句,另一个是数据库连接对象。创建Command对象后,就可以执行SQL命令,执行后完成并关闭数据连接,示例代码如下所示。
cmd.ExecuteNonQuery(); //执行SQL命令
con.Close(); //关闭连接
SqlCommand类的属性
1.CommandText
获取或设置要对数据源执行的Transact—SQL语句或存储过程的名称。
2. CommandType
获取或设置一个值,该值指示如何解释CommandText属性。
当将 CommandType 属性设置为 StoredProcedure 时,应将 CommandText 属性设置为存储过程的名称。当调用 Execute 方法之一时,该命令将执行此存储过程。
用于 SQL Server 的 Microsoft .NET Framework 数据提供程序不支持在向通过 Text 的 CommandType 调用的 SQL 语句或存储过程传递参数时使用问号 (?) 占位符。在这种情况下,必须使用命名的参数。例如:
SELECT * FROM Customers WHERE CustomerID = @CustomerID
下面的示例创建一个SqlCommand并设置它的一些属性。
3.Connection
获取或设置SqlCommand的实例使用的SqlConnection。
4.CommandTimeOut
获取或设置在终止执行命令的尝试并生成错误之前的等待时间。
SqlCommand类的方法
1.ExecuteNonQuery();
它的返回值类型为int型。多用于执行增加,删除,修改数据。返回受影响的行数。当select操作时,返回-1。
2.ExecuteReader();
它的返回类型为SqlDataReader。此方法用于用户进行的查询操作。使用SqlDataReader对象的Read();方法进行逐行读取。
例如:
其中的读取数据列的时候。除了使用reder["列名"].ToString();还可以使用reder[索引].ToSting();<注意:这里的索引指的是数据库中列的索引。从0开始。>
3.ExecuteScaler();
它的返回值类型多位int类型。它返回的多为执行select查询。得到的返回结果为一个值的情况,比如使用count函数求表中记录个数或者使用sum函数求和等。
4.其它;
当参数中含有问号 (?) 等占位符时,必须使用命名的参数。
下面的示例演示如何创建 SqlCommand 和向 SqlParameterCollection 中添加参数。例如:
使用sqlcommand对象来返回数据集合的方法
string strconn="data source=billgates;initial catalog=test;integrated security=SSPI;";
SqlConnection conn=new SqlConnection(strconn);
conn.Open();
SqlCommand sqlcmd=new SqlCommand();
sqlcmd.CommandText ="select * from student";
sqlcmd.Connection=conn;
SqlDataAdapter adp=new SqlDataAdapter(sqlcmd);
DataTable dt=new DataTable();
adp.Fill(dt);
dataGrid1.DataSource=dt;
使用sqlcommand对象来返回SQL执行正确与否
string strconn="data source=billgates;initial catalog=test;integrated security=SSPI;";
SqlConnection conn=new SqlConnection(strconn);
conn.Open();
SqlCommand sqlcmd=new SqlCommand();
sqlcmd.CommandText ="select * from student";
sqlcmd.Connection=conn;
try
{
sqlcmd.ExecuteNonQuery();
MessageBox.Show("success");
}
catch
{
MessageBox.Show("false");
}
使用sqlcommand对象来操作存储过程
string strconn="data source=billgates;initial catalog=test;integrated security=SSPI;";
SqlConnection conn=new SqlConnection(strconn);
conn.Open();
SqlCommand sqlcmd=new SqlCommand();
sqlcmd.CommandText ="a";
sqlcmd.CommandType=CommandType.StoredProcedure ;
sqlcmd.Connection=conn;
sqlcmd.Parameters.Add("@param1",textBox1.Text.Trim());
sqlcmd.Parameters.Add("@param2",textBox2.Text.Trim());
sqlcmd.Parameters.Add("@param3",textBox3.Text.Trim());
SqlDataAdapter adp=new SqlDataAdapter(sqlcmd);
DataTable dt=new DataTable();
adp.Fill(dt);
dataGrid1.DataSource=dt;
ExecuteReader方法
using System;
using System.Data.SqlClient;
public class Lvcha
{
public static void Main(string[] args)
{
string source="Server =192.168.1.100; User ID=ac_sy_guest; Password=guest1314; Initial CataLog=Account";
string select="select * from dbUser";
SqlConnection conn=new SqlConnection(source);
conn.Open();
SqlCommand cmd=new SqlCommand(select,conn);
SqlDataReader reader=cmd.ExecuteReader();//返回只能读取,不能写入的SqlDataReader对象
while(reader.Read())
{
Console.WriteLine("{0}",reader["user_name"]);
}
Console.ReadLine();
}
}
ExecuteNonQuery方法
一般修改删除都插入都用它
返回受影响的行数。
using System;
using System.Data.SqlClient;
public class Lvcha
{
public static void Main(string[] args)
{
string source="Server =192.168.1.100; User ID=ac_sy_guest; Password=guest1314; Initial CataLog=Account";
string select="updata .....";
SqlConnection conn=new SqlConnection(source);
conn.Open();
SqlCommand cmd=new SqlCommand(select,conn);
object o=cmd.ExecuteNonQuery();
while(reader.Read())
{
Console.WriteLine("{0}",reader["user_name"]);
}
Console.ReadLine();
}
}
ExecuteScalar方法
执行查询,并返回查询所返回的结果集中第一行的第一列。所有其他的列和行将被忽略。
using System;
using System.Data.SqlClient;
public class Lvcha
{
public static void Main(string[] args)
{
string source="Server =192.168.1.100; User ID=ac_sy_guest; Password=guest1314; Initial CataLog=Account";
string select="select count(*) from dbUser";
SqlConnection conn=new SqlConnection(source);
conn.Open();
SqlCommand cmd=new SqlCommand(select,conn);
object o=cmd.ExecuteScalar();
Console.WriteLine(o);
Console.ReadLine();
}
}
ExecuteNonQuery用于执行不返回任何记录的SQL语句或存储过程。在数据库执行如更新、插入、删除操作时,应使用这个方法。ExecuteNonQuery返回一个整数值,用来说明受查询语句影响的行数。
connection.Open();
command.ExecuteNonQuery();
command.Close();
ExecuteScalar与ExecuteNonQuery一样,其返回的也是单值,但该返回值是从数据库中读出来的,而不是受影响的行数。它通常用于选择一个值的SQL语句。如果SELECT返回多行或多列,则使用该方法仅返回第一行第一列的数据。
ExecuteReader被用于返回多条记录的SELECT语句(包含任意个字段)。ExecuteReader将返回一个包含查询结果的 SqlDataReader对象。一个SqlDataReader对象是以顺序向前且只读的形式逐个读取并返回结果的。SqlDataReader是数据 库中读取数据最快的对象,但必须打开连接。通过SqlDataReader取回所有的记录,并把它们存入DataTable对象中(它可以存储离线数据而 不需要一个打开的连接),这样就可以马上关闭数据库连接了。DataTable类可以存放本地的结果集而不需要一个打开的SQL Server连接,和其它的ADO.NET对象一样,它也不是特定于某种数据提供程序的。
conn.Open();
SqlDataReader reader = comm.ExecuteReader();
DataTable table = new DataTable();
table.Load(reader);
reader.Close();
conn.Close();