c#操作mysql执⾏语句_C#Command:操作数据库
在上⼀节《C# Connection》中我们讲解了 C# 语⾔连接数据库的⽅法,在与数据库建⽴连接之后即可开始操作数据库中的对象。
操作数据库需则要⽤到 Command 类中提供的属性和⽅法。下⾯来介绍⼀下如何使⽤ Command 类来操作数据表中的数据。
Command 类概述
在 System.Data.SqlClient 命名空间下,对应的 Command 类为 SqlCommand,在创建 SqlCommand 实例前必须已经创建了与数据库的连接。
SqlCommand 类中常⽤的构造⽅法如下表所⽰。
构造⽅法
说明
SqlCommand()
⽆参构造⽅法
SqlCommand(string commandText,SqlConnection conn)
带参的构造⽅法,第 1 个参数是要执⾏的 SQL 语句,第 2 个参数是数据库的连接对象
对数据库中对象的操作不仅包括对数据表的操作,还包括对数据库、视图、存储过程等数据库对象的操作,接下来主要介绍的是对数据表和存储过程的操作。
在对不同数据库对象进⾏操作时,SqlCommand 类提供了不同的属性和⽅法,常⽤的属性和⽅法如下表所⽰。
属性或⽅法
说明
CommandText
属性,Command 对象中要执⾏的 SQL 语句
Connection
属性,获取或设置数据库的连接对象
CommandType
属性,获取或设置命令类型
Parameters
属性,设置 Command 对象中 SQL 语句的参数
ExecuteReader()
⽅法,获取执⾏查询语句的结果
ExecuteScalar()
⽅法,返回查询结果中第 1 ⾏第 1 列的值
ExecuteNonQuery()
⽅法,执⾏对数据表的增加、删除、修改操作
使⽤ Command 类操作数据库
Command 类中提供了 3 种命令类型,分别是 Text、TableDirect 以及 StoredProcedure,默认情况下是 Text。
所谓 Text 类型是指使⽤ SQL 语句的形式,包括增加、删除、修改以及查询的SQL语句。
StoredProcedure ⽤于执⾏存储过程;TableDirect 仅在 OLE DB 驱动程序中有效。
在使⽤ Command 类操作数据库时需要通过以下步骤完成。
1) 创建 SqlCommand 类的实例
创建 SqlCommand 类的实例分两种情况,⼀种是命令类型为 Text 的,⼀种是命令类型为 StoredProcedure 的。
命令类型为 Text
SqlCommand SqlCommand 类的实例名 = new SqlCommand( SQL 语句 , 数据库连接类的实例 );
其中:
SQL 语句:指该 SqlCommand 类的实例要执⾏的 SQL 语句。
数据库连接类的实例:指使⽤ SqlConnection 类创建的实例,通常数据库连接类的实例处于打开的状态。
命令类型为 StoredProcedure
SqlCommand SqlCommand 类的实例名 = new SqlCommand( 存储过程名称 , 数据库连接类的实例 );
需要注意的是,存储过程必须是当前数据库实例中的存储过程,并且在调⽤带参数的存储过程时,还需要在 SqlCommand 类的实例中添加对应的存储过程参数。
为存储过程添加参数,需要使⽤ SqlCommand 类实例的 Parameters 属性来设置,具体的代码如下。
SqlCommand 类实例 .Parameters.Add( 参数名 , 参数值 );
在这⾥,参数名与存储过程中定义的参数名要⼀致。
2) 执⾏对数据表的操作
在执⾏对数据表的操作时通常分为两种情况,⼀种是执⾏⾮查询 SQL 语句的操作,即增加、修改、删
除的操作,⼀种是执⾏查询 SQL 语句的操作。
执⾏⾮查询 SQL 语句的操作
在执⾏⾮查询 SQL 语句时并不需要返回表中的数据,直接使⽤ SqlCommand 类的 ExecuteNonQuery ⽅法即可,该⽅法的返回值是⼀个整数,⽤于返回 SqlCommand 类在执⾏ SQL 语句后,对表中数据影响的⾏数。
当该⽅法的返回值为 -1 时,代表 SQL 语句执⾏失败,当该⽅法的返回值为 0 时,代表 SQL 语句对当前数据表中的数据没有影响。
例如 要删除学号为 1100 的学⽣的信息,⽽表中不存在该学号的学⽣的信息,SQL语句可以正常执⾏,但对表中的影响⾏数是 0。
具体的代码如下。
SqlCommand 类的实例 .ExecuteNonQuery();
需要注意的是,如果执⾏的 SQL 语句在数据库中执⾏错误,则会产⽣异常,因此该部分需要进⾏异常处理。
执⾏查询语句的操作
在执⾏查询语句时通常需要返回查询结果,SqlCommand 类中提供的 ExecuteReader ⽅法在执⾏查询 SQL 语句后,会返回⼀个SqlDataReader 类型的值,通过遍历 SqlDataReader 类中的结果即可得到返回值。
具体的代码如下。
SqlDataReader dr = SqlCommand 类的实例 .ExecuteReader();
此外,如果在执⾏查询语句后并不需要返回所有的查询结果,⽽仅需要返回⼀个值,例如查询表中的记录⾏数,这时可以使⽤ExecuteScalar ⽅法。具体的代码如下。
int returnvalue = SqlCommand 类的实例 .ExecuteScalar();
下⾯通过实例来演⽰ SqlCommand 类的使⽤。
【实例 1】制作⼀个⽤户注册界⾯,使⽤ SqlCommand 类向⽤户信息表中添加⼀条记录。根据题⽬要求,先在 SQL Server 2014 中创建⽤户信息表 userinfo,SQL 语句如下。create table userinfo
(
id int identity(1,1) primary key,
name varchar(20),
password varchar(20)
)
为了⽅便,将表中的 id 设置为主键,并设置为标识列,以保证值的唯⼀性。
使⽤ SqlCommand 类向表中添加数据的语句如下。
//“注册”按钮的单击事件
private void button1_Click(object sender, EventArgs e)
{
//编写数据库连接串
string connStr = "Data Source=.;Initial Catalog=test;User ID=sa;Password=root"; //创建 SqlConnection的实例
SqlConnection conn = null;
try
{
conn = new SqlConnection(connStr);
//打开数据库连接
conn.Open();
string sql = "insert into userinfo(name,password) values('{0}','{1}')";
//填充SQL语句
sql = string.Format(sql, textBox1.Text, textBox2.Text);
//创建SqlCommand对象
SqlCommand cmd = new SqlCommand(sql, conn);
/
/执⾏SQL语句
int returnvalue = cmd.ExecuteNonQuery();
//判断SQL语句是否执⾏成功
if(returnvalue != -1)
{
MessageBox.Show("注册成功!");
}
}
catch(Exception ex)
{
MessageBox.Show("注册失败!"+ex.Message);
}
简单的mysql语句finally
{
if (conn != null)
{
//关闭数据库连接
conn.Close();
}
}
}
运⾏窗体,效果如下图所⽰。
从上⾯的运⾏效果可以看出,通过 SqlCommand 对象已经将⽤户信息添加到数据表 userinfo 中。
【实例 2】制作⼀个登录界⾯,使⽤ SqlCommand 类判断⽤户是否登录成功。
根据题⽬要求,登录功能通过查询语句来实现,即将界⾯上输⼊的⽤户名和密码与数据表中存储的⽤户信息相⽐较,如果有与之匹配的⽤户信息则弹出消息框提⽰登录成功, 否则提⽰登录失败。
实现登录功能的界⾯如下图所⽰。
在登录界⾯中的“登录”按钮的单击事件中实现⽤户登录功能,并在“取消”按钮的单击事件中实现关闭登录窗体的功能。实现的代码如下。
//"登录"按钮的单击事件
private void button1_Click(object sender, EventArgs e)
{
//编写数据库连接串
string connStr = "Data Source=.;Initial Catalog=test;User ID=sa;Password=root";
//创建SQLConnection的实例
SqlConnection conn = null;
try
{
conn = new SqlConnection(connStr);
//打开数据库连接
conn.Open();
string sql = "Select count(*) from userinfo where name='{0}' and password='{1}'";
//填充SQL语句
sql = string.Format(sql, textBox1.Text, textBox2.Text);
//创建SqlCommand对象
SqlCommand cmd = new SqlCommand(sql, conn);
//执⾏SQL语句
int returnvalue = (int)cmd.ExecuteScalar();
//判断SQL语句是否执⾏成功
if (returnvalue != 0)
{
MessageBox.Show("登录成功!");
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论