.NET连接数据库以及基本的增删改查操作教程

 更新时间:2021年9月22日 10:02  点击:2122

一、前言

因为这学期选修的 .net 课程就要上机考试了,所以总结下.net 操作 SqlServer 数据的方法。(因为本人方向是 Java,所以对.net 的了解不多,但以下所写代码均是经过测试成功的),下面话不多说了,来一起看看详细的介绍吧。

二、.net 连接数据库

 在web.config文件中配置数据库连接,代码写在<configuration></configuration>

 <appSettings>
 <add key="connstring" value="user id=sa; password=sa123456; database=dataset; server=(local)" />
 </appSettings>

其中 sa  为 SqlServer 数据库账号,sa123456 为数据库账号密码,dataset 位数据库名。

通过上面的代码大家不难看出这是通过SqlServer数据库的账号连接的。那么如果需要通过Windows身份认证连接呢?

 <appSettings>
 <add key="connstring" value="Data Source=.;Initial Catalog=dataset;Integrated Security=True"/>
 </appSettings>

其中,dataset 为数据库名。

配置好了之后,再在cs后台文件中使用 Connection 对象连接

String constr = ConfigurationManager.AppSettings["connstring"].ToString();  
SqlConnection myconn = new SqlConnection(constr);

很明显,第一个句获取我们在 web.config 中配置的数据库的信息的字符串,然后 new 一个 SqlConnection 对象。

这个时候也许你会想,既然是获取配置文件中的字符串,那么可不可以直接在cs后台文件中写而不需要再配置文件中配置后再获取呢?答案是肯定的。

String constr = "Data Source=.;Initial Catalog=dataset;Integrated Security=True";
SqlConnection myconn = new SqlConnection(constr);

仔细对比下先前写的配置文件,就知道这两种方式的相同点了。

那么现在简单说下 Connection 对象是个什么。在 ADO.NET 中 Connection 对象的主要用途是打开和关闭数据库的连接,通过这个对象,可以对数据库进行访问和操作。

String constr = "Data Source=.;Initial Catalog=dataset;Integrated Security=True";
SqlConnection myconn = new SqlConnection(constr);
myconn.Open();
//相关数据库操作
myconn.Close();

Open 就是打开数据库,Close 就是关闭数据库。

三、.net 操作数据库

那么通过 Connection 对象打开数据库后怎么对数据库操作呢?在 Dao.Net 中提供了Command 对象,主要就是用来对数据库进行增、删、改、查的操作。

下面我们直接看个查找操作的例子:

String constr = "Data Source=.;Initial Catalog=dataset;Integrated Security=True";
   SqlConnection myconn = new SqlConnection(constr);
   myconn.Open();
   string sql = "select * from custom ";
   SqlCommand cmd = new SqlCommand(sql, sqlConnection);
   SqlDataReader dataReader = cmd.ExecuteReader();
   Show.Text = "<tr><td>学号</td><td>姓名</td><td>学院</td><td>年龄</td><td>昵称</td></tr>";
   while (dataReader.Read())
   {
    Show.Text = Show.Text + "<tr><td>" + dataReader[0].ToString()
     + "</td><td>" + dataReader[1].ToString()
     + "</td><td>" + dataReader[2].ToString()
     + "</td><td>" + dataReader[3].ToString()
     + "</td><td>" + dataReader[4].ToString() + "</td></tr>";

   }
   sqlConnection.Close();

通过上面这段代码,不难发现,在开启Connection对象后,首先我们需要写一段查询的sql语句:

   string sql = "select * from custom ";

然后,new 一个SqlCommand对象,参数是 sql 语句 和 Connection 对象 。

   SqlCommand cmd = new SqlCommand(sql, sqlConnection);

再然后,我们通过 SqlCommand 对象的 ExecuteReader 方法,执行查询语句,并返回一个DataReader 对象。

   SqlDataReader dataReader = cmd.ExecuteReader();

再再然后,就是将 DataReader 对象中的数据(也就是我们查询的数据)读取出来了

while (dataReader.Read())
   {
    Show.Text = Show.Text + "<tr><td>" + dataReader[0].ToString()
     + "</td><td>" + dataReader[1].ToString()
     + "</td><td>" + dataReader[2].ToString()
     + "</td><td>" + dataReader[3].ToString()
     + "</td><td>" + dataReader[4].ToString() + "</td></tr>";

   }

最后,当然是关闭我们的 Connection 对象了。

   sqlConnection.Close();

查询操作是通过 Command 对象的 ExecuteReader 方法来操作,那么增删改呢?

增删改的话就得用到 Command 对象的 ExecuteNonQuery 方法了。这个方法返回的是受影响的行数,也就是说如果操作失败,返回的是0。

还是看个增加数据的例子吧:

myconn.Open();
   String sql = "insert into custom values('" + uid.Text + "','" + uname.Text + "','" + udepart.Text
    + "'," + uage.Text + ",'" + uename.Text + "','" + upassword.Text + "')";
   SqlCommand cmd = new SqlCommand(sql, myconn);
   if (cmd.ExecuteNonQuery() > 0)
   {
    this.Response.Write("<script language='javascript'>alert('增加成功!')</script>");
   }
   else
   {
    this.Response.Write("<script language='javascript'>alert('添加失败!')</script>");
   }
   myconn.Close();

通过上面代码,不难发现,其实套路和我们写的查询差不多,就是sql语句不同和调用的Command对象不同而已。

但是,仔细看会发现这段代码是使用了 sql 语句拼接的。这种方式写起来比较乱(又是双引号又是单引号的),还有可能被 sql 注入。这个时候就会想,能不能有占位符呢?答案是肯定的。

myconn.Open();
   SqlCommand cmd = myconn.CreateCommand();
   cmd.CommandText = "insert into custom values(@uid,@uname,@udepart,@uage,@uename,@upassword)";
   cmd.Parameters.AddWithValue("@uid", uid.Text);
   cmd.Parameters.AddWithValue("@uname", uname.Text);
   cmd.Parameters.AddWithValue("@udepart", udepart.Text);
   cmd.Parameters.AddWithValue("@uage", uage.Text);
   cmd.Parameters.AddWithValue("@uename", uename.Text);
   cmd.Parameters.AddWithValue("@upassword", upassword.Text);
   if (cmd.ExecuteNonQuery() > 0)
   {
    this.Response.Write("<script language='javascript'>alert('增加成功!')</script>");
   }
   else
   {
    this.Response.Write("<script language='javascript'>alert('添加失败!')</script>");
   }
   myconn.Close();
   ShowAll();

这段代码与之前代码的不同之处在于:

1.使用 Connection 对象的 CreateCommand 方法创建了一个SqlCommand 对象。

   SqlCommand cmd = myconn.CreateCommand();

2.使用了Command 对象的 CommandText 属性写 sql 语句文本,当然也可以是存储过程的名称。

   cmd.CommandText = "insert into custom values(@uid,@uname,@udepart,@uage,@uename,@upassword)";

3.使用了Command 对象的 Parameters 属性 输入参数。

cmd.Parameters.AddWithValue("@uid", uid.Text);
   cmd.Parameters.AddWithValue("@uname", uname.Text);
   cmd.Parameters.AddWithValue("@udepart", udepart.Text);
   cmd.Parameters.AddWithValue("@uage", uage.Text);
   cmd.Parameters.AddWithValue("@uename", uename.Text);
   cmd.Parameters.AddWithValue("@upassword", upassword.Text);

嗯这样一改看起来就很舒服了^_^

修改、删除和增加的套路是差不多的。这里就不贴代码了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对猪先飞的支持。

[!--infotagslink--]

相关文章

  • ASP.NET购物车实现过程详解

    这篇文章主要为大家详细介绍了ASP.NET购物车的实现过程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-22
  • PHP 数据库缓存Memcache操作类

    操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
  • C#连接SQL数据库和查询数据功能的操作技巧

    本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Intellij IDEA连接Navicat数据库的方法

    这篇文章主要介绍了Intellij IDEA连接Navicat数据库的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借价值,需要的朋友可以参考下...2021-03-25
  • 在数据库里将毫秒转换成date格式的方法

    在开发过程中,我们经常会将日期时间的毫秒数存放到数据库,但是它对应的时间看起来就十分不方便,我们可以使用一些函数将毫秒转换成date格式。 一、 在MySQL中,有内置的函数from_unixtime()来做相应的转换,使用如下: 复制...2014-05-31
  • .NET Core下使用Kafka的方法步骤

    这篇文章主要介绍了.NET Core下使用Kafka的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • 在ASP.NET 2.0中操作数据之七十二:调试存储过程

    在开发过程中,使用Visual Studio的断点调试功能可以很方便帮我们调试发现程序存在的错误,同样Visual Studio也支持对SQL Server里面的存储过程进行调试,下面就让我们看看具体的调试方法。...2021-09-22
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 如何解决局域网内mysql数据库连接慢

    通过内网连另外一台机器的mysql服务, 确发现速度N慢! 等了大约几十秒才等到提示输入密码。 但是ping mysql所在服务器却很快! 想到很久之前有过类似的经验, telnet等一些服务在连接请求的时候,会做一些反向域名解析(如果...2015-10-21
  • MySQL快速复制数据库数据表的方法

    某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库。使用以下方法,可以非常简单地实现。假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb。步骤如下:1. 首先创建新的数据库newd...2015-10-21
  • mysqldump命令导入导出数据库方法与实例汇总

    mysqldump命令的用法1、导出所有库系统命令行mysqldump -uusername -ppassword --all-databases > all.sql 2、导入所有库mysql命令行mysql>source all.sql; 3、导出某些库系统命令行mysqldump -uusername -ppassword...2015-10-21
  • Win10 IIS 安装.net 4.5的方法

    这篇文章主要介绍了Win10 IIS 安装及.net 4.5及Win10安装IIS并配置ASP.NET 4.0的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2021-09-22
  • Mysql数据库错误代码中文详细说明

    1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库...2013-09-23
  • 详解.NET Core 3.0 里新的JSON API

    这篇文章主要介绍了详解.NET Core 3.0 里新的JSON API,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • c#异步读取数据库与异步更新ui的代码实现

    这篇文章主要介绍了c#从数据库里取得数据并异步更新ui的方法,大家参考使用吧...2020-06-25
  • Yii2.0高级框架数据库增删改查的一些操作

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2使用中的一些基本的增删改查操作。 User::find()->all(); //返回所有用户数据; User::findOne($id); //返回 主键...2015-11-24
  • .net数据库操作框架SqlSugar的简单入门

    这篇文章主要介绍了.net数据库操作框架SqlSugar的简单入门,帮助大家更好的理解和学习使用.net技术,感兴趣的朋友可以了解下...2021-09-22
  • ASP.NET Core根据环境变量支持多个 appsettings.json配置文件

    这篇文章主要介绍了ASP.NET Core根据环境变量支持多个 appsettings.json配置文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
  • springBoot 项目排除数据库启动方式

    这篇文章主要介绍了springBoot 项目排除数据库启动方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-10