【发布时间】:2017-08-16 12:59:50
【问题描述】:
我正在将数据库信息导出到 VB.NET MVC 项目中的 excel 文件中。
我已经完成了 excel 部分,并且可以将硬代码表导出到 excel 中。但我需要用我的数据库中的字段填充该表。我有一个存储过程,它可以获取我需要的所有信息,但我无法让它运行并且无法让我通过并按照我需要的顺序放置我需要的字段。
如果有帮助,这就是我制作 Excel 表格的方式。
Dim blah = New DataTable("testing")
blah.Columns.Add("Col1", Type.GetType("System.String"))
blah.Columns.Add("Col2", Type.GetType("System.String"))
'Below will be switched out for table data, this is where the try for the SQL will end up
blah.Rows.Add(1, "hello")
blah.Rows.Add(2, "hello")
blah.Rows.Add(3, "hello")
blah.Rows.Add(4, "hello")
Dim grid = New GridView()
grid.DataSource = blah
grid.DataBind()
Response.ClearContent()
Response.Buffer = True
Response.AddHeader("content-disposition", "attachment; filename=Test-Report.xls")
Response.ContentType = "application/ms-excel"
Response.Charset = ""
Dim sw = New StringWriter()
Dim htw = New HtmlTextWriter(sw)
grid.RenderControl(htw)
Response.Output.Write(sw.ToString())
Response.Flush()
Response.End()
EDIT---- 我在弄清楚用于运行具有返回值并能够遍历它并获取行值的存储过程的语法和值时遇到问题。我已经进行了大量的谷歌搜索,并且大多数都有没有返回值的存储过程或返回一个值的查询,并且我返回了很多字段。
我正在运行的存储过程如下所示:
SELECT
i.insurer_name
,cs.customer_name
,cs.customer_address
,cs.claim_number
,cs.work_type
,anu.FirstName
,anu.LastName
,l.location_name
,cs.completed_date
,q.question_text
,a.answer_text
FROM insurer i
inner join completed_survey cs on cs.insurer_id = i.insurer_id
inner join AspNetUsers anu on anu.Id = cs.user_id
inner join location l on l.location_id = cs.location_id
inner join answer a on a.complete_id = cs.completed_id
inner join question q on q.question_id = a.question_id
ORDER BY i.insurer_name, cs.survey_score desc
EDIT 2 ---- 我不完全确定如何回答我正在使用的数据库连接。我在网络配置中有一个连接字符串,并且我正在使用实体框架,所以我的大部分代码都是这样的
Private db As New SurveyDBModel
db.table_name.ToList()
db.table_name.Add(new_row)
【问题讨论】:
-
您在哪里尝试执行 SP?此外,Execute Stored Procedure 的可能副本
-
但我无法让它运行 - 请具体说明您遇到的问题。 “我遇到了麻烦”不是有效的问题陈述。
-
您使用的是什么数据库连接库?请显示您用于连接数据库并执行该过程的代码。如果您使用的是 ADO.NET,通常只需几行即可将结果直接导出到 DataSet 或 DataTable。还有什么 RDBMS 是什么? SQL Server?
-
“我不完全确定如何回答我正在使用的数据库连接”...然后您说“实体框架”,这是对该问题的有效答案。 EF 是一个用于连接数据库的 ORM 库。您仍然没有说它是哪个 RDBMS,但幸运的是,EF 充分抽象了事物,使其在很大程度上变得无关紧要。
-
您应该能够调用(SQL Server)存储过程,例如:
using (var db = new YourEntitiesObject()) { object[] paramList = new object[1]; paramList[0] = new SqlParameter("someParameter", someVariable); return db.Database.SqlQuery<YourModelClass>("[YourSchemaName].[YourProcedureName] @someParameter", paramList).ToList(); },它将直接将结果序列化为您指定的类型。
标签: asp.net asp.net-mvc vb.net stored-procedures