mvc 中如何用sql 语句进行数据查询呢?

时间:2021-02-02 15:10:38
因为不会 Linq 所以想用sql语句来查询数据,请问应该怎么做呢?
知道的朋友请说说,谢谢!

25 个解决方案

#1


平时怎么用就怎么用!不知道你说是asp.net mvc还是什么mvc

我现在在csdn上看到人家说mvc大多数人说的都是三层!让我感觉很杯具!

#2


不好意思没讲清楚,我就是想问怎么在asp.net 的 mvc 2 中使用sql 语句,我看一些教程都是使用Microsoft Entity Framework 或 Linq 来访问的,比如:

        MusicStoreEntities storeDB = new MusicStoreEntities();

        //GET: /Store
        public ActionResult Index()
        {
            var genres = from genre in storeDB.Genres select genre.Name;
            var viewModel = new StoreIndexViewModel 
            {
                Genres = genres.ToList(),NumberOfGenres = genres.Count()  
            };
            return View(viewModel);
        }

我如果想用sql 来查询记录应该怎么做呢?这里mvc 已经不使用记录集的方法了,如果我想把返回的n条记录绑定到一个“数据显示控件”上面又该怎么办呢?
谢谢!

#3


#4


当 MusicStoreEntities storeDB = new MusicStoreEntities();这样定义了以后,我看到storeDB里面有个ExecuteStoreQuery 方法,我查了下好像可以用来执行Sql 语句,如果我执行类似于"select * from Artlist" 这样的查询,返回的结果应该是个什么类型的呢?
开始的时候我打算用一个 datatable 来接收,于是这样写了:
DataTable mytb = new DataTable();
mytb = storeDB.ExecuteStoreQuery<DataTable>("select * from Artlist");
结果不对,报错:
无法将类型“System.Data.Objects.ObjectResult<System.Data.DataTable>”隐式转换为“System.Data.DataTable”

于是我又新建了一个类,myArtlist(和Artlist表结构一样):

    public class myArtlist
    {
        public int artID { get; set; }
        public string artName { get; set; }
    }

于是代码改成:
myArtlist mylist1 = new myArtlist();
mylist1 = storeDB.ExecuteStoreQuery<myArtlist>("select * from Artlist");
结果错误类似:
无法将类型“System.Data.Objects.ObjectResult<Mvccs_tmp.ViewModels.myArtlist>”隐式转换为“Mvccs_tmp.ViewModels.myArtlist”
请问应该怎样做来取得类似于以前 datatable 这样的二维表格数据的返回结果呢?
谢谢!

#5


引用 2 楼 njstalk 的回复:
不好意思没讲清楚,我就是想问怎么在asp.net 的 mvc 2 中使用sql 语句,我看一些教程都是使用Microsoft Entity Framework 或 Linq 来访问的,比如:

C# code

        MusicStoreEntities storeDB = new MusicStoreEntities();

        //GET: /Store
 ……


在view页面普通的webform控件是不能用的,可以用foreach或者重写控件。

#6


<%
foreach(var m in Model)
{
Response.Write(m.artName );
}
%>

#7


学习了

#8


谢谢!
我想问,在Controller 里面,访问数据库的方法,就是在 Microsoft Entity Framework 中使用Sql查询语句的方法,比如我 楼里面的问题。
:)

#9



var dt = storeDB.ExecuteStoreQuery<实体类>("select * from Artlist");

return dt;//dt就是结果集

#10


引用 9 楼 imfor 的回复:
var dt = storeDB.ExecuteStoreQuery<实体类>("select * from Artlist");

return dt;//dt就是结果集

实体类: 这个应该怎么写呢?写 DataTable ?
dt 拿到以后又怎么用呢?好像找不到 Rows 这样的属性了。。。
谢谢!

#11


你以前写程序的时候没有建立过数据库访问层吗? 不用LINQ在ASP.NET MVC中也是可以的,只要写好你自己的访问层,然后在controller里面建立实例就行,但是MVC的重点是Model,如果你用DataTable直接表现数据那就失去了MVC的意义。

从数据库中查询出来的数据要用ICollection<T>的形式来承载,如List<Person>, IQueryable<Person>等等,datatable,dataset等也要转换成collection,然后return View(collection);就可以了。

#12


用db.ExecuteQuery<实体类>(string str).ToList();

#13


可以举个例子吗?谢谢!

#14


实体类: public class PriceModel
    {
        private string _P_Name;
        private decimal _P_Price;
        private DateTime _P_Date;
        /// <summary>
        /// 公司编码
        /// </summary>
        public string P_Name
        {
            set { _P_Name = value; }
            get { return _P_Name; }
        }
        public decimal P_Price
        {
            set { _P_Price = value; }
            get { return _P_Price; }
        }
        public DateTime P_Date
        {
            set { _P_Date = value; }
            get { return _P_Date; }
        }
    }

#15



            return db.ExecuteQuery<PriceModel>("SELECT P_Price,P_Name FROM easy_Price ").ToList();

#16


谢谢!
可不可以不定义这个 PriceModel 类呢?有很多种查询结果的话就得定义很多种类好像很麻烦。能不能直接返回为datatable 类型的数据或是 xml  json格式的呢?

#17


我觉得你说的是两回事,2L的代码应该是用了实体数据模型去做的,你的MusicStoreEntities应该是个dbmx 吧。

如果你不想用dbmx去做,可以用3层+mvc来实现用sql查询的方式访问数据

#18


引用 17 楼 hrabeyond 的回复:
我觉得你说的是两回事,2L的代码应该是用了实体数据模型去做的,你的MusicStoreEntities应该是个dbmx 吧。

如果你不想用dbmx去做,可以用3层+mvc来实现用sql查询的方式访问数据

MusicStoreEntities 是一个 dbmx 好像这种方式也可以用sql查询了,就是返回值很麻烦,要预先定义一个实体类来接收数据,我想请教有没有简单的方法来接收数据。

#19


引用 18 楼 njstalk 的回复:
MusicStoreEntities 是一个 dbmx 好像这种方式也可以用sql查询了,就是返回值很麻烦,要预先定义一个实体类来接收数据,我想请教有没有简单的方法来接收数据。


那你就自己写实体。。一点都不费劲,网上很多代码生成器,选好表一生成,尸体就出来了,复制粘贴,就能在项目里用了,比较效率的

#20


我自己貌似是mvc 结合3层一起用的。

#21


引用 8 楼 njstalk 的回复:
谢谢!
我想问,在Controller 里面,访问数据库的方法,就是在 Microsoft Entity Framework 中使用Sql查询语句的方法,比如我4 楼里面的问题。
:)


Controller 层是干嘛的?

#22


mvc 和 3层 区别是很大的。

#23


mvc 和3层怎么结合呢?结合后3层主要主要干哪些事呢?谢谢!

#24


引用 21 楼 gongsun 的回复:
引用 8 楼 njstalk 的回复:
谢谢!
我想问,在Controller 里面,访问数据库的方法,就是在 Microsoft Entity Framework 中使用Sql查询语句的方法,比如我4 楼里面的问题。
:)


Controller 层是干嘛的?

数据处理是放到 models 里面,这里我就是想在Controller 里面接收数据,我想知道有没有简便的方法能接收类似以前记录集的这种数据,或是json这类的,能方便绑定到表格的。
谢谢!

#25


引用 23 楼 njstalk 的回复:
mvc 和3层怎么结合呢?结合后3层主要主要干哪些事呢?谢谢!

:(:(:(:(:(:(:(:

#1


平时怎么用就怎么用!不知道你说是asp.net mvc还是什么mvc

我现在在csdn上看到人家说mvc大多数人说的都是三层!让我感觉很杯具!

#2


不好意思没讲清楚,我就是想问怎么在asp.net 的 mvc 2 中使用sql 语句,我看一些教程都是使用Microsoft Entity Framework 或 Linq 来访问的,比如:

        MusicStoreEntities storeDB = new MusicStoreEntities();

        //GET: /Store
        public ActionResult Index()
        {
            var genres = from genre in storeDB.Genres select genre.Name;
            var viewModel = new StoreIndexViewModel 
            {
                Genres = genres.ToList(),NumberOfGenres = genres.Count()  
            };
            return View(viewModel);
        }

我如果想用sql 来查询记录应该怎么做呢?这里mvc 已经不使用记录集的方法了,如果我想把返回的n条记录绑定到一个“数据显示控件”上面又该怎么办呢?
谢谢!

#3


#4


当 MusicStoreEntities storeDB = new MusicStoreEntities();这样定义了以后,我看到storeDB里面有个ExecuteStoreQuery 方法,我查了下好像可以用来执行Sql 语句,如果我执行类似于"select * from Artlist" 这样的查询,返回的结果应该是个什么类型的呢?
开始的时候我打算用一个 datatable 来接收,于是这样写了:
DataTable mytb = new DataTable();
mytb = storeDB.ExecuteStoreQuery<DataTable>("select * from Artlist");
结果不对,报错:
无法将类型“System.Data.Objects.ObjectResult<System.Data.DataTable>”隐式转换为“System.Data.DataTable”

于是我又新建了一个类,myArtlist(和Artlist表结构一样):

    public class myArtlist
    {
        public int artID { get; set; }
        public string artName { get; set; }
    }

于是代码改成:
myArtlist mylist1 = new myArtlist();
mylist1 = storeDB.ExecuteStoreQuery<myArtlist>("select * from Artlist");
结果错误类似:
无法将类型“System.Data.Objects.ObjectResult<Mvccs_tmp.ViewModels.myArtlist>”隐式转换为“Mvccs_tmp.ViewModels.myArtlist”
请问应该怎样做来取得类似于以前 datatable 这样的二维表格数据的返回结果呢?
谢谢!

#5


引用 2 楼 njstalk 的回复:
不好意思没讲清楚,我就是想问怎么在asp.net 的 mvc 2 中使用sql 语句,我看一些教程都是使用Microsoft Entity Framework 或 Linq 来访问的,比如:

C# code

        MusicStoreEntities storeDB = new MusicStoreEntities();

        //GET: /Store
 ……


在view页面普通的webform控件是不能用的,可以用foreach或者重写控件。

#6


<%
foreach(var m in Model)
{
Response.Write(m.artName );
}
%>

#7


学习了

#8


谢谢!
我想问,在Controller 里面,访问数据库的方法,就是在 Microsoft Entity Framework 中使用Sql查询语句的方法,比如我 楼里面的问题。
:)

#9



var dt = storeDB.ExecuteStoreQuery<实体类>("select * from Artlist");

return dt;//dt就是结果集

#10


引用 9 楼 imfor 的回复:
var dt = storeDB.ExecuteStoreQuery<实体类>("select * from Artlist");

return dt;//dt就是结果集

实体类: 这个应该怎么写呢?写 DataTable ?
dt 拿到以后又怎么用呢?好像找不到 Rows 这样的属性了。。。
谢谢!

#11


你以前写程序的时候没有建立过数据库访问层吗? 不用LINQ在ASP.NET MVC中也是可以的,只要写好你自己的访问层,然后在controller里面建立实例就行,但是MVC的重点是Model,如果你用DataTable直接表现数据那就失去了MVC的意义。

从数据库中查询出来的数据要用ICollection<T>的形式来承载,如List<Person>, IQueryable<Person>等等,datatable,dataset等也要转换成collection,然后return View(collection);就可以了。

#12


用db.ExecuteQuery<实体类>(string str).ToList();

#13


可以举个例子吗?谢谢!

#14


实体类: public class PriceModel
    {
        private string _P_Name;
        private decimal _P_Price;
        private DateTime _P_Date;
        /// <summary>
        /// 公司编码
        /// </summary>
        public string P_Name
        {
            set { _P_Name = value; }
            get { return _P_Name; }
        }
        public decimal P_Price
        {
            set { _P_Price = value; }
            get { return _P_Price; }
        }
        public DateTime P_Date
        {
            set { _P_Date = value; }
            get { return _P_Date; }
        }
    }

#15



            return db.ExecuteQuery<PriceModel>("SELECT P_Price,P_Name FROM easy_Price ").ToList();

#16


谢谢!
可不可以不定义这个 PriceModel 类呢?有很多种查询结果的话就得定义很多种类好像很麻烦。能不能直接返回为datatable 类型的数据或是 xml  json格式的呢?

#17


我觉得你说的是两回事,2L的代码应该是用了实体数据模型去做的,你的MusicStoreEntities应该是个dbmx 吧。

如果你不想用dbmx去做,可以用3层+mvc来实现用sql查询的方式访问数据

#18


引用 17 楼 hrabeyond 的回复:
我觉得你说的是两回事,2L的代码应该是用了实体数据模型去做的,你的MusicStoreEntities应该是个dbmx 吧。

如果你不想用dbmx去做,可以用3层+mvc来实现用sql查询的方式访问数据

MusicStoreEntities 是一个 dbmx 好像这种方式也可以用sql查询了,就是返回值很麻烦,要预先定义一个实体类来接收数据,我想请教有没有简单的方法来接收数据。

#19


引用 18 楼 njstalk 的回复:
MusicStoreEntities 是一个 dbmx 好像这种方式也可以用sql查询了,就是返回值很麻烦,要预先定义一个实体类来接收数据,我想请教有没有简单的方法来接收数据。


那你就自己写实体。。一点都不费劲,网上很多代码生成器,选好表一生成,尸体就出来了,复制粘贴,就能在项目里用了,比较效率的

#20


我自己貌似是mvc 结合3层一起用的。

#21


引用 8 楼 njstalk 的回复:
谢谢!
我想问,在Controller 里面,访问数据库的方法,就是在 Microsoft Entity Framework 中使用Sql查询语句的方法,比如我4 楼里面的问题。
:)


Controller 层是干嘛的?

#22


mvc 和 3层 区别是很大的。

#23


mvc 和3层怎么结合呢?结合后3层主要主要干哪些事呢?谢谢!

#24


引用 21 楼 gongsun 的回复:
引用 8 楼 njstalk 的回复:
谢谢!
我想问,在Controller 里面,访问数据库的方法,就是在 Microsoft Entity Framework 中使用Sql查询语句的方法,比如我4 楼里面的问题。
:)


Controller 层是干嘛的?

数据处理是放到 models 里面,这里我就是想在Controller 里面接收数据,我想知道有没有简便的方法能接收类似以前记录集的这种数据,或是json这类的,能方便绑定到表格的。
谢谢!

#25


引用 23 楼 njstalk 的回复:
mvc 和3层怎么结合呢?结合后3层主要主要干哪些事呢?谢谢!

:(:(:(:(:(:(:(: