知者何南 发表于 2022-11-12 17:01:29

篇(4)-Asp.Net Core入门实战-使用ADO.NET

入门实战-在Asp.NET CORE中使用ADO.NET
在讲EF的配置之前,我想说下基于ADO.NET的数据库操作方式:原来做项目时,都是要有个DBHelper文件,来进行数据库的增删改查操作,那么在Asp.net core中如何使用(不推荐,但是也可用)呢?
1.我们在根目录下,建立个Db的文件夹,然后建立个DbHelper.cs的类文件;
https://img2022.cnblogs.com/blog/39139/202211/39139-20221112090609642-735173972.jpg
2.完善DbHelper.cs文件,简单在里面写两个函数,演示使用。
https://img2022.cnblogs.com/blog/39139/202211/39139-20221112090609813-1929567107.jpg
具体的代码是如下,如果想要完整的Dbhelper.cs代码,自行到网上copy一下,太多了,我都是拿以前用过的项目代码,简单改下,还是能用的:
public class DbHelper
    {
      public DbHelper() {} //0.空构造函数

      //1.读取appsetting.json文件中的数据库连接字符串
      private static string ConnectionString
      {
            get {
                var builder = new ConfigurationBuilder()
                  .SetBasePath(AppDomain.CurrentDomain.BaseDirectory) //这行还有个写法是:.SetBasePath(Directory.GetCurrentDirectory())
                  .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); //optional=true表示文件是必须的,reloadOnChange=true表示当文件变更时自动更新配置
                var strConnection = builder.Build().GetSection("DbConnectionStr")["SqlServerStr"];
                return strConnection;
            }
      }

      //2.执行sql语句返回dataset
      publicDataSet Query(string SQLString)
      {
            using (SqlConnection connection = new SqlConnection(ConnectionString))
            {
                DataSet ds = new DataSet();
                try
                {
                  connection.Open();
                  SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
                  command.Fill(ds, "ds");
                }
                catch (Microsoft.Data.SqlClient.SqlException ex)
                {
                  connection.Close();
                  throw new Exception(ex.Message);
                }
                return ds;
            }
      }

      //3.执行sql语句,返回受影响的行数
      publicint ExecuteSql(string SQLString)
      {
            using (SqlConnection connection = new SqlConnection(ConnectionString))
            {
                using (SqlCommand cmd = new SqlCommand(SQLString, connection))
                {
                  try
                  {
                        connection.Open();
                        int rows = cmd.ExecuteNonQuery();
                        return rows;
                  }
                  catch (Microsoft.Data.SqlClient.SqlException e)
                  {
                        connection.Close();
                        throw e;
                  }
                }
            }
      }

    } 
 
 
3.数据库能连上后,我们就可以在Controller中的Action里,编写数据的操作和一些业务逻辑代码。打开HomeController,
https://img2022.cnblogs.com/blog/39139/202211/39139-20221112090609819-1361996953.jpg
(1).看默认项目的结构,Controller下的HomeController控制着2个视图,即Views下Home文件夹内的Index.cshtml和Privacy.cshtml,在HomeController.cs文件内的情况是:
https://img2022.cnblogs.com/blog/39139/202211/39139-20221112090609707-559734334.jpg
(2).那么我们可以在Index()这个Action里写一下代码,变量,可以通过视图展现出来,做个简单的测试;
https://img2022.cnblogs.com/blog/39139/202211/39139-20221112090609732-992189924.jpg
(3).对应在视图Index.cshtml的调用方式如下
https://img2022.cnblogs.com/blog/39139/202211/39139-20221112090609805-1002725916.jpg
(4).当然,可以直接在Index.cshtml中,输出代码或变量是前面带上@号。
https://img2022.cnblogs.com/blog/39139/202211/39139-20221112090609618-1028228411.jpg
(5).预览效果就是这样的:
https://img2022.cnblogs.com/blog/39139/202211/39139-20221112090609159-685428948.jpg
4.在HomeController中的Privacy这个Action,我们来输出从数据库中拉出来的数据;
(1).先在Privacy()中连接和读取数据返回一个DataTable,代码如下:
https://img2022.cnblogs.com/blog/39139/202211/39139-20221112090609354-374725485.jpg
(2).然后在视图页面Privacy.cshtml中,修改代码,因为Action 返回的是dt,所以在视图页中,循环遍历一个DataTable,遍历时要用到DataRow,那么在页面的最前端要引入System.Data
https://img2022.cnblogs.com/blog/39139/202211/39139-20221112090609766-1044113123.jpg
(3).最后看一下预览效果(这个实例的增、删、改不在演练,感兴趣可自己琢磨一下)
https://img2022.cnblogs.com/blog/39139/202211/39139-20221112090609827-1080836688.jpg
(4).还要一种写法,在Action中,将DataTable转成Model,这样可以遵循一下MVC模式,例如,还是Privacy这个Action,我们如下修改:
https://img2022.cnblogs.com/blog/39139/202211/39139-20221112090609850-2051822811.jpg
修改成List list,将dt的数据赋值到Model上,return到view的是list,这样在view页面,可以这样输出:
https://img2022.cnblogs.com/blog/39139/202211/39139-20221112090609829-447187525.jpg
这样写,符合了MVC,model值,你在view页遍历输出。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 篇(4)-Asp.Net Core入门实战-使用ADO.NET