SqlCommand类
CommandText 获取或设置要对数据源执⾏的 Transact-SQL 语句、表名或存储过程。
CommandTimeout 获取或设置在终⽌执⾏命令的尝试并⽣成错误之前的等待时间。
CommandType 获取或设置⼀个值,该值指⽰释 CommandText 是SQL语句,存储过程还是表操作。 Connection 获取或设置 SqlCommand 的此实例使⽤的 SqlConnection。
Parameters 获取 SqlParameterCollection。
Transaction 获取或设置将在其中执⾏ SqlCommand 的 SqlTransaction。
static void Main(string[] args)
{
string str = "server=.;database=JunTest;uid=sa;pwd=123";
SqlConnection conn = new SqlConnection(str);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "Update Person Set Name = 'Ado修改' WHERE Id = @Id"; //设置操作语句
//看看默认的发⽣错误等待时间(秒)
Console.WriteLine(cmd.CommandTimeout); //30
//指明CommandText是SQL语句,存储过程还是表操作。枚举类型,转到定义可看
Console.WriteLine(cmd.CommandType); //输出 Text 表⽰这是⼀条SQL语句
//SqlCommand的SqlConnection实例对象
Console.WriteLine(cmd.Connection.ConnectionString); //"server=.;database=JunTest;uid=sa;pwd=123";
//设置参数值
cmd.Parameters.Add("@Id", SqlDbType.Int);
cmd.Parameters["@Id"].Value = 1;
Console.WriteLine(cmd.Parameters["@Id"].Value); //输出1
conn.Open();
conn.Close();
Console.ReadKey();
}
1、ExecuteNonQuery() 增删改操作
增、删、改都是这个:
static void Main(string[] args)
{
string str = "server=.;database=JunTest;uid=sa;pwd=123;";
SqlConnection conn = new SqlConnection(str); //创建连接
SqlCommand cmd = conn.CreateCommand(); //创建命令
cmd.CommandText = "Update Person Set PersonName = 'Ado修改' WHERE PersonId = @Id"; //设置操作语句
cmd.Parameters.Add("@Id", SqlDbType.Int); //添加参数,说明类型
cmd.Parameters["@Id"].Value = 1; //设置参数值
conn.Open(); //打开连接
int i = cmd.ExecuteNonQuery(); //执⾏命令,ExecuteNonQuery由名称看出,只能⽤于⾮查询语句
conn.Close(); //关闭连接
Console.WriteLine(i); //输出影响⾏数
Console.ReadKey();
}
2、ExecuteScalar() 返回第⼀⾏第⼀列
3、ExecuteReader() 创建⼀个SqlDataReader⽤于读取数据
static void Main(string[] args)
sqltransaction什么意思{
string str = "server=.;database=JunTest;uid=sa;pwd=123;";
SqlConnection conn = new SqlConnection(str); //创建连接
SqlCommand cmd = conn.CreateCommand(); //创建命令
cmd.CommandText = "SELECT * FROM Person"; //设置操作语句
conn.Open(); //打开连接
//SqlDataReader读取数据
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader[0] + ":" + reader[1]); //输出当前⾏的第⼀列,第⼆列数据
}
}
cmd.CommandText = "SELECT Count(*) FROM Person";
object obj = cmd.ExecuteScalar(); //仅查询第⼀⾏第⼀列
Console.WriteLine((int)obj);
conn.Close(); //关闭连接
Console.ReadKey();
}
4、ExecuteXmlReader() 返回System.XmlReader实例,⽤于读取SQLServer中的XML字段的值 ⾸先建⼀张表如下:
其中ArticleInfo字段的数据类型为xml,值为:
<Article>
<author age="30">张三</author>
<length>12000</length>
<price>42</price>
</Article>
下⾯,我们使⽤ExecuteXmlReader()读取出author的值:
static void Main(string[] args)
{
string str = "server=.;database=JunTest;uid=sa;pwd=123;";
SqlConnection conn = new SqlConnection(str); //创建连接
SqlCommand cmd = conn.CreateCommand(); //创建命令
cmd.CommandText = "SELECT * FROM Person"; //设置操作语句
conn.Open(); //打开连接
cmd.CommandText = "SELECT Top 1 ArticleInfo FROM Article"; //查询XML字段
using (XmlReader reader = cmd.ExecuteXmlReader()) //由Command实例返回XmlReader的实例
{
while (reader.Read())
{
if (reader.Name == "author")
{
Console.WriteLine(reader.ReadInnerXml()); //输出张三
}
}
}
conn.Close();
Console.ReadKey();
}
还有就是以上这些⽅法的异步版本,本处仅以以下两个⽅法⽰例:
5、BeginExecuteNonQuery() 异步版ExecuteNonQuery()
6、EndExecuteNonQuery() 异步版ExecuteNonQuery()
class Program
{
static void Main(string[] args)
{
string str = "server=.;database=JunTest;uid=sa;pwd=123;Asynchronous Processing=true";
SqlConnection conn = new SqlConnection(str); //创建连接
SqlCommand cmd = conn.CreateCommand(); //创建命令
cmd.CommandText = "INSERT INTO Person VALUES(11,'郭嘉')"; //设置操作语句
conn.Open(); //打开连接
cmd.BeginExecuteNonQuery(BeginCallback, cmd); //异步执⾏语句
Console.WriteLine("不管你执没执⾏完,我继续做我的事!");
Console.ReadKey();
}
public static void BeginCallback(IAsyncResult result)
{
Console.WriteLine("正在执⾏SQL命令!");
SqlCommand cmd = result.AsyncState as SqlCommand; //获得异步传⼊的参数
Console.WriteLine("成功执⾏命令:" + cmd.CommandText);
Console.WriteLine("本次执⾏影响⾏数为:" + cmd.EndExecuteNonQuery(result));
Console.WriteLine("关闭连接!");
cmd.Connection.Close(); //正式关闭连接
}
}
输出结果如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论