原来一直是java,python等语言,最近用c#语言,并编写数据库访问代码。使用了之后,这里总结下,分享下c#如何操作数据库。

在java等其它语言中,有一套标准的api来完成数据库访问,并且一般都是通过sql语句来访问的。而在c#中,提供了多种灵活的方式。

大致可以分为:

1)和其它语言一样,直接利用sql命令(包括存储过程)操作数据库

2)利用sql语句,同时结合DataSet、DataAdapter等Api,提高使用的效率

3)与gui程序结合,与DataGridView等可视化组件结合。

本文介绍第一种方式。对于第一种方式,主要分为更新语句和查询语句,需要考虑的有:

1)单条和批量更新语句的执行

2)参数绑定

3)事务处理

.........

下面我们按照常用的使用场景一 一来介绍。

一、更新操作(单条语句)

直接上代码

usingSystem;usingSystem.Data;usingSystem.Data.SqlClient;namespaceDbExample

{classDbActor

{public voidupdateDb()

{

SqlConnection conn=getConnection();try{

conn.Open();

SqlCommand command= new SqlCommand("insert userinfo values('aaa','bb')", conn);int re =command.ExecuteNonQuery();if (re == 1)

{

System.Console.WriteLine("inset success");

}else{

System.Console.WriteLine("inset error");

}

}catch(Exception ex)

{

System.Console.WriteLine(ex.Message);

}finally{

conn.Close();

}

}privateSqlConnection getConnection()

{string strConnection = @"Data Source = localhost\SQLEXPRESS; Initial Catalog = mydb; User Id = sa; Password = 12345678;";

SqlConnection conn= newSqlConnection(strConnection);returnconn;

}

}

}

需要注意几点:

1)数据库链接是资源,使用完需要释放。这在所有其它语言的数据库访问中都是这样的。

2)c#比较讨厌的是,它针对不同的数据库,有不同的数据访问对象(类名不同,所在的命名空间不同),这里的api都是Sqlxxxxx,以Sql打头的api是访问sql server数据库的api。这点在使用时需要注意。

3)ExecuteNonQuery 方法的返回值是执行sql命令后影响的记录的条数。

二、参数绑定

执行sql命令,最基本的就是拼凑一个完整的sql语句执行。但更常用的做法是进行参数传递的方式,这样可以有效利用数据库的特性,提高同类sql语句(sql命令一样,只是命令的值不同)的执行效率。举例代码如下:

public voidupdateDbByPara()

{

SqlConnection conn=getConnection();try{

conn.Open();

SqlCommand command= new SqlCommand("insert userinfo values(@name,@pass)", conn);

command.Parameters.Add(new SqlParameter("@name","x1"));

command.Parameters.Add(new SqlParameter("@pass", "123"));

command.ExecuteNonQuery();

}catch(Exception ex)

{

System.Console.WriteLine(ex.Message);

}finally{

conn.Close();

}

}

注意:sql语句中的  @参数名  不能用引号括起来,否则就当作字符串值了。

三、事务

当同时执行多条dml语句时,需要考虑在一个事务中执行。下面给出一个例子:

public voidupdateDbByTrans()

{

SqlConnection conn=getConnection();

SqlTransaction trans= null;try{

conn.Open();

trans=conn.BeginTransaction();

SqlCommand command= new SqlCommand("insert userinfo values(@name,@pass)", conn,trans);

command.Parameters.Add(new SqlParameter("@name", "x5"));

command.Parameters.Add(new SqlParameter("@pass", "123"));

command.ExecuteNonQuery();

command.Parameters.Clear();

command.Parameters.Add(new SqlParameter("@name", "x4"));

command.Parameters.Add(new SqlParameter("@pass", "123"));

command.ExecuteNonQuery();

trans.Commit();

}catch(Exception ex)

{

MessageBox.Show(ex.Message);try{

trans.Rollback();

}catch{ }

}finally{

conn.Close();

}

}

上面执行了两个sql语句,如果第一个语句成功,但第2个语句失败,因为在一个事务中,第一个语句也不会生效。

本文介绍了如何直接利用sql语句进行数据库的更新操作,下面的文章会接着进行数据库查询等操作的介绍。

c#操作mysql 执行语句_c# 数据库编程(通过SqlCommand 执行DML语句)相关推荐

  1. python socket mysql_5.Python操作MySQL,三层架构,Socket网络编程

    Python操作MySQL - MySQL之查询操作 - MySQL之插入数据 - MySQL之批量插入数据 - MySQL之删除数据 - MySQL之更新数据库 - MySQL之事务 - MySQL ...

  2. oracle 不能导入sql语句,oracle数据库导入.dmp脚本的sql 语句

    一.更改数据库管理员sys/system密码 1.运行到C盘根目录 2.输入:SET ORACLE_SID = 你的SID名称 3.输入:sqlplus /nolog 4.输入:connect /as ...

  3. python中表示嵌套语句快_Python编程(8)——if语句的嵌套,语言,程序设计,8if

    if语句的嵌套 1 if语句嵌套 if语句嵌套指的是if语句内部包含if语句,其格式如下: if 条件表达式1: 代码块1 if 条件表达式2: 代码块2 上述if语句嵌套的格式中,先判断外层if语句 ...

  4. SQL语句在数据库中是如何执行的

    第一步:应用程序把查询SQL语句发给服务器端执行 我们在数据层执行SQL语句时,应用程序会连接到相应的数据库服务器,把SQL语句发送给服务器处理. 第二步:服务器解析请求的SQL语句 SQL计划缓存, ...

  5. 监控mysql业务数据分析_MySQL数据库监控指标之执行性能总结

    查询性能 MySQL 用户监控查询延迟的方式有很多,既可以通过 MySQL 内置的指标,也可以通过查询性能模式.从 MySQL 5.6.6 版本开始默认启用,MySQL 的 performance_s ...

  6. mysql创建表时添加范式,MySql三大范式与数据库设计和表创建常用语句

    [导读]第一范式1NF First Normal Fromate:数据表中的每一列字段,必须是不可拆分的最小单元.也就是确保每一列的原子性. [数据库设计的三大范式] 1.第一范式(1NF First ...

  7. linux操作mysql的语法_MySQL数据库的基本操作命令

    一.mysql服务操作 1.net start mysql //启动mysql服务 2.net stop mysql //停止mysql服务 3.mysql -h主机地址 -u用户名 -p用户密码 / ...

  8. mysql原生库_Mysql数据库的一些简单原生sql语句

    原生sql语句查询: select * from 表名  : 查找表内所有数据, * 代表所有 where 具体条件 : where作位查询sql语句条件, 例 select * from 表名 wh ...

  9. linq拼接where语句_C# 10. LINQ 的三种查询语句写法

    C# 10. LINQ 的三种查询语句写法 前言: LINQ(语言集成查询)是 C#编程语言中的一部分.它在.NET Framework 3.5 和 C#3.0 被引入,在 System.Linq 命 ...

最新文章

  1. Python中列表的copy方法
  2. CCNA Discovery第二学期 (版本 4.1)
  3. QT的QRadioTuner类的使用
  4. 【最全最详细】使用publiccms实现动态可维护的导航菜单栏
  5. Python GIL 系列之再谈Python的GIL
  6. [古诗]有关日本留学生的那些古诗
  7. JDK、JRE、JVM的区别与联系
  8. linux mysql dump命令_linux下mysql命令
  9. JS动态更新微信浏览器中的title
  10. 【深度优先搜索】计蒜客:引爆炸弹
  11. 一个有趣的.net程序死锁问题
  12. Axis2生成wsdl的一种方法
  13. 压力测试的轻量级具体做法
  14. IDEA-------Webstorm主题推荐
  15. 计算机如何共享文件夹给另一台电脑,如何共享文件夹到另一台电脑,两台电脑要怎么共享文件呢?...
  16. 团队管理31-典型场景(向上沟通)
  17. Matlab中stft函数的使用与原理
  18. webstorm 2018 激活破解方法亲测可用
  19. 重读《一段关于国产芯片和操作系统的往事》
  20. 网上做什么挣钱?7个能赚钱的项目,个个都能发财!

热门文章

  1. 软件登录界面设计分享
  2. 牛客网(剑指offer) 第十九题 顺时针打印矩阵
  3. PHP高级编程之消息队列
  4. [数据库] Oracle使用CASE判断解决多值问题
  5. 2013年第四届蓝桥杯C/C++ A组国赛 —— 第五题:网络寻路
  6. PTA —— 基础编程题目集 —— 编程题 —— 7-2 然后是几点 (15 分)
  7. 【STM32】程序下载(ST-LINK V2)
  8. 【Linux】一步一步学Linux——ypdomainname命令(173)
  9. 【Linux】一步一步学Linux——host命令(162)
  10. [Qt教程] 第24篇 数据库(四)SQL查询模型QSqlQueryModel