C#编程基础SqlCommand类的作用以及常用方法 |
您所在的位置:网站首页 › 图书分类的作用 › C#编程基础SqlCommand类的作用以及常用方法 |
当使用SqlConnection类的Open方法成功连接数据库后,需要使用SqlCommand执行SQL查询数据库操作,一般操作完数据库,建议调用SqlConnection类的Colse方法关闭数据库。 在C#的数据库操作过程中,SqlCommand类一般用于Sqlserver数据库的SQL语句的执行,包括Select语句、Update语句、Delete语句以及SQL存储过程等。 一、SqlCommand类常用属性CommandText:获取或设置要对数据源执行的 Transact-SQL 语句、表名或存储过程。 CommandTimeout: 获取或设置在终止执行命令的尝试并生成错误之前的等待时间。 CommandType:获取或设置一个值,该值指示释 CommandText 是SQL语句,存储过程还是表操作。 Connection:获取或设置 SqlCommand 的此实例使用的 SqlConnection。 Parameters:获取 SqlParameterCollection参数集合。 Transaction :获取或设置将在其中执行 SqlCommand 的数据库事务对象 SqlTransaction。 二、SqlCommand类常用方法ExecuteNonQuery()方法:返回影响的行数,主要用于增删改操作。 ExecuteScalar()方法 :返回第一行第一列,例如我们在计算总条数的时候会使用到此方法。 ExecuteReader()方法:创建一个SqlDataReader用于读取数据,用于查询数据。 ExecuteXmlReader()方法:返回System.XmlReader实例,用于读取SQLServer中的XML字段的值 三、SqlCommand类实战---创建SqlCommand对象 建立一个WEB窗体,添加一个Button按钮(ID名称为Button1),再添加一个TextBox文本框(ID名称为TextBox1),点击按钮如果打开成功,TextBox1文本框上显示出数据库已打开,否则TextBox1文本框上显示打开失败。 数据库创建成功后,创建一个SqlCommand对象sqlcommand,并设置出错时等待时间为2秒。完整的代码为: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using MySql.Data.MySqlClient; namespace WebApplication32 { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { string sqlstr = "Server=localhost;UserId=root;Password=68331;Database=CarSYS;pooling=false;CharSet=utf8;port=3306";//声明一个字符串用来存放连接数据库的信息 MySqlConnection con = new MySqlConnection(sqlstr);//创建一个SqlConnection对象 try //将可能出错的语句放在try语句里 { con.Open(); //Response.Write("打开数据库成功!"); TextBox1.Text = "打开数据库成功!"; string sqlcommandStr = "select * from Brand";//创建统计语句 MySqlCommand sqlcommand = new MySqlCommand(sqlcommandStr, con);//创建Command对象 sqlcommand.CommandTimeout = 2;//设置等待时间 Response.Write("创建Command成功"); } catch (Exception ex) { Response.Write(ex.Message); TextBox1.Text = "打开数据库失败!"; } finally { con.Close();//关闭数据库连接 } } } }
运行结果: 鼠标点Button按钮 四、SqlCommand类实战---ExecuteNonQuery()方法 这个方法没有返回任何结果,一般用于updata,delete,insert等SQL语句,执行完ExecuteNonQuery()方法后,返回受影响的行数。 例:通过ExecuteNonQuery方法修改CarSYS数据库中的Brand数据表中BrandId为1的用户的名称
从上图可以观察到CarSYS数据库中的Brand数据表中BrandId为1的用户的名称为HongQi。下面的代码将CarSYS数据库中的Brand数据表中BrandId为1的用户的名称由HongQi修改为HongQi_2020 string sqlcommandStr = "update Brand set BrandName = 'HongQi_2020' where BrandId = 1";//创建修改SQL语句建立一个WEB窗体,添加一个Button按钮(ID名称为Button1),再添加一个TextBox文本框(ID名称为TextBox1),点击按钮如果打开成功,TextBox1文本框上显示出数据库已打开,否则TextBox1文本框上显示打开失败。 完整的代码为: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using MySql.Data.MySqlClient; using System.Data; namespace WebApplication32 { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { string sqlstr = "Server=localhost;UserId=root;Password=68331;Database=CarSYS;pooling=false;CharSet=utf8;port=3306";//声明一个字符串用来存放连接数据库的信息 MySqlConnection con = new MySqlConnection(sqlstr);//创建一个SqlConnection对象 try //将可能出错的语句放在try语句里 { if (con.State == ConnectionState.Closed) { con.Open(); TextBox1.Text = "打开数据库成功!"; } string sqlcommandStr = "update Brand set BrandName = 'HongQi_2020' where BrandId = 1";//创建修改SQL语句 MySqlCommand sqlcommand = new MySqlCommand(sqlcommandStr, con);//创建Command对象 //执行SQL语句并返回受影响的行数 int number = sqlcommand.ExecuteNonQuery(); string message = number > 0 ? "修改信息成功!" : "修改信息失败!"; Response.Write(message); } catch (Exception ex) { Response.Write(ex.Message); } finally { con.Close();//关闭数据库连接 } } } }总之,如果受影响的行数>0,就表示更新成功。
五、SqlCommand类实战---ExecuteScalar()方法 使用ExecuteScalar方法()方法可以以标量值的形式返回结果集中第一行第一列的值。例如:下面使用COUNT(*)聚合函数 来返回数据库中的总记录条数。
建立一个WEB窗体,添加一个Button按钮(ID名称为Button1),再添加一个TextBox文本框(ID名称为TextBox1),点击按钮如果打开成功,TextBox1文本框上显示出数据库已打开,否则TextBox1文本框上显示打开失败。
完整的代码为: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using MySql.Data.MySqlClient; using System.Data; namespace WebApplication32 { public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { string sqlstr = "Server=localhost;UserId=root;Password=68331;Database=CarSYS;pooling=false;CharSet=utf8;port=3306";//声明一个字符串用来存放连接数据库的信息 MySqlConnection con = new MySqlConnection(sqlstr);//创建一个SqlConnection对象 try //将可能出错的语句放在try语句里 { if (con.State == ConnectionState.Closed) { con.Open(); TextBox1.Text = "打开数据库成功!"; } string sqlcommandStr = "select COUNT(*) from Brand";//创建统计语句 MySqlCommand sqlcommand = new MySqlCommand(sqlcommandStr, con);//创建Command对象 sqlcommand.Connection = con; int sum = Convert.ToInt32(sqlcommand.ExecuteScalar()); string message = string.Format("Brand表中共有{0}条记录", sum); Response.Write(message); } catch (Exception ex) { Response.Write(ex.Message); } finally { con.Close();//关闭数据库连接 } } } } 运行结果如下:六、SqlCommand类实战---ExecuteReader()方法
我们已经知道,使用SqlCommand的ExecuteNonQuery()方法执行SQL语句可以返回受影响的行数,使用SqlCommand的 ExecuteScalar()方法从数据库中检索单个值,那么要想从数据库中读取多条记录怎么办呢? 可以使用SqlCommand对象的ExecuteReader()方法,这个方法返回一个SqlDataReader对象,通过这个SqlDataReader对象程序就可以从数据库中读取多条记录了。 使用SqlDataReader对象可以从数据库中检索只读数据,其每次从查询结果中读取一行到内存中。使用SqlDataReader读取数据时,不能够对其进行修改,因为它是只读的。而且在读取数据时,要始终保持与数据库的连接。 SqlDataReader对象中的Read()方法将读取器前进到结果集中的下一个记录。 使用SqlDataReader的步骤如下: 第一步:创建SqlCommand对象 第二步:调用SqlCommand对象的ExecuteReader()方法创建SqlDataReader对象。 假如已经有了一个名为sqlcommand的SqlCommand对象,可以这样创建一个SqlDataReader对象 MySqlDataReader reader = sqlcommand.ExecuteReader();第三步:使用SqlDataReader对象的Read()方法逐行读取数据。 这个方法返回一个布尔值,如果能读取下一行,返回True,否则返回False。 第四步:读取当前行的某列数据。 可以像使用数组一样,用方括号来读取某列的值,如果(type)dataReader[] 使用SqlDataReader对象读取数据库时会占用数据库连接,必须调用Close()方法关闭SqlDataReader,才能用数据库连接进行其它操作。 下面的代码查询CarSYS数据库中的Brand数据表中的BrandId字段 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |