持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情
前言
今天我们一起来学习一下ExecuteNonQuery方法,ExecuteNonQuery是对数据库的一个操作,是 .NET 数据提供程序的 Connection 对象执行 SQL 语句,并返回受影响的行数,主要用来更新数据,也可以去执行目标操作,例如查询数据库的结构或者创建诸如表等的数据库对象通常用它来执行insert、update、delete语句,在不使用Dataset的情况下更改数据库中的数据,你可以用这个方法写数据库帮助类,select语句不适合ExecuteNonQuery()方法。,创作不易,点赞关注评论收藏,你的点赞是我创作的动力,也是我学习的方向。
ExecuteNonQuery操作失败和成功的返回值
对于Update、insert、Delete语句执行成功是返回值为该命令所影响的行数,如果影响的行数是0,则返回值就是0; 对于所有其他类型的语句,返回值为-1; 如果发生回滚,返回值也为-1;我们一般对于更新操作,通过判断返回值是否大于0,这个是没有问题的。但是对于其他的操作如对数据结构的操作(建表等)如果操作成功返回值却是-1,但是要注意一下啊,例如给数据库添加一个新表,创建成功返回-1,如果操作失败就会发生异常,所有执行这种操作最好用Try,Catch语句来捕捉异常。
简单使用
操作步骤就是先有数据库,然后创建数据库连接,再对已连接的数据库创建Command对象,并指定一个SQL Inser、Update、Delete查询或者存储过程,然后通过把Command对象依附到数据库连接上,调用ExecuteNonQuery()方法,获得返回的值,再关闭连接。
public class ExecuteNonQueryClas
{
private static string connectionString = ConfigurationManager.ConnectionStrings["connectionString"].ConnectionString;
private ExecuteNonQueryClas()
{
}
public static int ExecuteNonQuery(string commandText)
{
return ExecuteNonQuery(commandText, (SqlParameter[])null);
}
public static int ExecuteNonQuery(string commandText,SqlParameter[] commandParams)//建立链接
{
if(connectionString == null || connectionString.Length == 0)
throw new ArgumentNullException("connectionString");
using(SqlConnection conn = new SqlConnection(connectionString))
{
SqlCommand cmd = new SqlCommand(commandText,conn);
if (conn.State != ConnectionState.Open)
conn.Open();
if(commandParams !=null)
AttachParameters(cmd,commandParams);
int recordsAffected = cmd.ExecuteNonQuery();
return recordsAffected;
}
}
private static void AttachParameters(SqlCommand cmd,SqlParameter[] commandParams)
{
if (cmd == null) throw new ArgumentException("command");
if (commandParams != null)
{
foreach (SqlParameter p in commandParams)
{
if (p != null)
{
if ((p.Direction == ParameterDirection.InputOutput || p.Direction == ParameterDirection.Input) && (p.Value == null))
{
p.Value = DBNull.Value;
}
cmd.Parameters.Add(p);
}
}
}
}
}
static void Main(string[] args)
{
string userName = Console.ReadLine();
string loginId = "user";//用户名
string sqlString = "update Users set UserName = @name where LoginID= @loginID";//链接数据库,使用Updata更新数据
SqlParameter[] parms ={
new SqlParameter("@name",userName),
new SqlParameter("@loginID",loginId)
};
int rlt = ExecuteNonQueryClas.ExecuteNonQuery(sqlString,parms);//获取更新的行数的结果
Console.WriteLine(rlt);//打印输出
Console.Read();
}
总结
这篇文章比较简单,只是简单的学习一下,对它有更多的认识,在有需求的时候最起码有路子,虽然很简单,但是也是可以学到东西的,我们学习了新的知识,对我们的知识储备及技术又有新的一点点的进步,C#的技术就是先简单再难嘛,积少成多之后才会成长才会进步,我们要不断的学习不断的探索,才能有学习的动力,才会有学习的欲望,创作不易,点赞评论收藏关注,嘿嘿,不喜勿喷!!!!