Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ODBC输出有没有更简单的方法-使用C ASP.NET MVC 4/5_C#_Asp.net Mvc_Odbc - Fatal编程技术网

C# ODBC输出有没有更简单的方法-使用C ASP.NET MVC 4/5

C# ODBC输出有没有更简单的方法-使用C ASP.NET MVC 4/5,c#,asp.net-mvc,odbc,C#,Asp.net Mvc,Odbc,我的公司使用ODBC进行数据收集,目标是将多个数据源拉到一个地方。 目前,如下图所示,我的控制器顶部有一个连接设置,连接到公司提供的ODBC连接。我将列名传递给数组列表,数组列表将传递给ViewBag。我对收集的数据也这样做。 这最终给了我一个没有索引键或任何引用的平面数组 迈利斯特 数组=列名[0],列名[1],列名[2] 资料 数组=行[0],行[1],行[2],行[0],行[1],行[2],行[0],行[1],行[2] 为了以一种对最终用户真正有意义的形式输出数据,我在视图中进行了一些黑客

我的公司使用ODBC进行数据收集,目标是将多个数据源拉到一个地方。 目前,如下图所示,我的控制器顶部有一个连接设置,连接到公司提供的ODBC连接。我将列名传递给数组列表,数组列表将传递给ViewBag。我对收集的数据也这样做。 这最终给了我一个没有索引键或任何引用的平面数组

迈利斯特

数组=列名[0],列名[1],列名[2]

资料

数组=行[0],行[1],行[2],行[0],行[1],行[2],行[0],行[1],行[2]

为了以一种对最终用户真正有意义的形式输出数据,我在视图中进行了一些黑客操作以输出数据。我对上面示例中的数据数组进行计数,它是9。在上面的示例中,我计算单元格以获得标题行,它是3。我创建了一个for循环,并在其中进行迭代,以计算标题与行之间的差异,以便获得数据的结束行并重置tr。我的结束输出如下所示,以供参考

[我的问题]

有没有更简单的方法来使用.Read命令?如何将数据添加到多维数组中,并输出每行的单个值的内容

输出索引.html

控制器-Project.cs

View-Index.CSHTML


通过在web.config中创建和/或设置多个连接字符串,可以绕过ODBC。我们目前使用Oracle DB和Sql Server,并找到了一种简单的方法来实现这一点,从而消除了对ODBC的需求。。查看此链接,了解如何根据您使用的数据库提供程序的类型配置连接字符串。web.config是否保存我的连接字符串或该字符串是否在控制器中声明是否重要?您是否建议我也可以使用另一个提供程序并从我连接的ODBC视图访问数据?为了在my index.cshtml中创建用于迭代的列表和适当数组,您可以在web.config中保存尽可能多的连接字符串,也可以在节点下的配置文件中保存多个和/或不同的数据库。。如果您了解如何访问和/或连接到数据库,则根本不需要ODBC。您熟悉如何使用web.config连接到数据库以及如何配置连接字符串吗?我的web.config中有多个到SQL server的连接字符串。这个控制器从数据库ODBC SQL中提取数据,我只能访问视图而不能访问表。视图将相应地设置,并包含FK和约束。我不能改变他们的数据库。当我选择退出ODBC并使用SQL作为提供程序时,我最终能够查看我的视图,但无法对视图运行查询,访问总是被拒绝。我能够访问数据的唯一方法是通过ODBC命令。您能说明配置是如何设置的吗。。我想你可能没有领会我的意思。。您发现odbc连接的用户id和用户密码是什么。。只需将其放入配置文件的连接字符串中,您将使其变得比需要的更困难。。我每天对多个数据库连接执行此操作,并向我展示您的配置
<table class="table table-hover table-bordered">
<tr>
<th>Column Name[0]</th>
<th>Column Name[1]</th>
<th>Column Name[2]</th>
</tr>
<tbody>
<tr><td>Row[0]</td><td>Row[1]</td><td>Row[2]</td></tr>
<tr><td>Row[0]</td><td>Row[1]</td><td>Row[2]</td></tr>
<tr><td>Row[0]</td><td>Row[1]</td><td>Row[2]</td></tr>
</tbody>
</table>
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data.Odbc;
using System.Data.SqlClient;

namespace Project.Controllers
{
public class ODBC: Controller
{
    OdbcConnection DBConnection = new OdbcConnection("DSN=Server;UID=USER;PWD=PASS;DATABASE=DATA-MARKET");

  public ActionResult Index()
    {

DBConnection.Open();
        OdbcCommand DbCommand = DBConnection.CreateCommand();
        DbCommand.CommandText = "SELECT \"ID\", \"Request ID\", \"Service ID\", \"Summary\" FROM    dbo.\"Records\" WHERE (\"Status Rejected User\" IS NULL)"; 
        OdbcDataReader DbReader = DbCommand.ExecuteReader();

        int fCount = DbReader.FieldCount;
        ArrayList myList = new ArrayList();


        for (int i = 0; i < fCount; i++)
        {
            myList.Add(DbReader.GetName(i));
        }


        ViewBag.Count = myList;

        ArrayList data = new ArrayList();



        while (DbReader.Read())
        {
            for (int i = 0; i < fCount; i++)
            {
                data.Add(DbReader.GetValue(i));
            }
        }



        ViewBag.fCount = fCount;
        DbReader.Close();
        DbCommand.Dispose();
        DBConnection.Close();
        ViewBag.data = data;
        return View();
    }
@model IEnumerable<Project.Controllers.ODBCController>

@{
ViewBag.Title = "Index";
var cell_count = @ViewBag.Count.Count;
}

<h2>Index -</h2>
<table class="table table-hover table-bordered">
<tr>

 @foreach( var ls in @ViewBag.Count){

 <th>@ls</th>
 }
</tr>
<tbody>  

     @for (int i = 0; i < ViewBag.data.Count; i++)
{
    var cells = cell_count;
    var item = ViewBag.data[i];

    if ((i % cells) == 0)
    {
        @:<tr>
    }

    <td>
        @item
    </td>

    if (i == (ViewBag.data.Count - 1))
    {
        while ((i % cells) != 0)
        {
            @:<td></td>
            i++;
        }
    }

    if ((i % cells) == (cells - 1)) // aka: last row cell
    {
        @:</tr>
    }
}

    </tbody>

</table>