如何修复 System.IndexOutOfRangeException:找不到表 0 ASP.NET

Posted

技术标签:

【中文标题】如何修复 System.IndexOutOfRangeException:找不到表 0 ASP.NET【英文标题】:How to fix System.IndexOutOfRangeException: Cannot find table 0 ASP.NET 【发布时间】:2019-08-21 05:29:15 【问题描述】:
  [WebMethod()]
        public DataTable insert_data_to_db_from_local(string partnumber, string srctcode, string dockcode,int pack,string error,string chk,string user,DateTime day,string ekb,string kbid)
        
            SqlConnection objConn = new SqlConnection();
            SqlCommand objCmd = new SqlCommand();
            SqlDataAdapter dtAdapter = new SqlDataAdapter();
            DataSet ds = new DataSet();
            DataTable dt = null;
            string strConnString = null;
            StringBuilder strSQL = new StringBuilder();
            strConnString = "Server=localhost;UID=sa;PASSWORD=12345678;database=bds_pp_srct;Max Pool Size=400;Connect Timeout=600;";
            strSQL.Append("INSERT INTO Hanheld (Part_Number,SRCT_Code,Dock_Code,Package,Error_Code,Chk_Type,LogUser,LogDate,ekb_order_no,Kanban_ID) VALUES ('" + partnumber + "','" + srctcode + "','" + dockcode + "','" + pack + "','" + error + "','" + chk + "','" + user + "','" + day + "','" + ekb + "','" + kbid + "') ");
            //strSQL.Append(" WHERE [SRCT_Code] = '" + strCusID + "' ");
            objConn.ConnectionString = strConnString;
            var _with1 = objCmd;
            _with1.Connection = objConn;
            _with1.CommandText = strSQL.ToString();
            _with1.CommandType = CommandType.Text;
            dtAdapter.SelectCommand = objCmd;
            dtAdapter.Fill(ds);
            dt = ds.Tables[0];
            dtAdapter = null;
            objConn.Close();
            objConn = null;
            return dt;
        

这个错误:

System.IndexOutOfRangeException:找不到表 0。 在 System.Data.DataTableCollection.get_Item(Int32 索引)

【问题讨论】:

您正在做一个INSERT 并像使用SELECT 一样使用它。它不会为您返回信息。 我建议阅读***.com/questions/14376473/…。 您是要插入还是选择? INSERT 查询不适用于此代码。 如何正确插入代码@Znaneswar 查看***.com/questions/12939501/… 【参考方案1】:

试试这个

private DataTable dataTable = new DataTable();
string connString = @"query string here";
string query = "select table";

SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(query, conn);
conn.Open();

SqlDataAdapter da = new SqlDataAdapter(cmd);        
da.Fill(dataTable);
conn.Close();
da.Dispose();

【讨论】:

【参考方案2】:

我认为您在代码中使用 DataSet 可能会出现问题

所以您首先需要检查 DataSet 在 0 位置包含数据表的位置

例如。

DataSet ds = new DataSet();
dtAdapter.Fill(ds);
if(ds != null && ds.Tables.Count > 0) 

//your logic


【讨论】:

【参考方案3】:
[WebMethod()]
    public void insert_data_to_db_from_local(string partnumber, string srctcode, string dockcode)
    
        using (SqlConnection conn = new SqlConnection("Server=localhost;UID=sa;PASSWORD=12345678;database=Test;Max Pool Size=400;Connect Timeout=600;"))
        
            using (SqlCommand cmd = new SqlCommand())
            
                cmd.Connection = conn;
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = @"INSERT INTO Hanheld(Part_Number,SRCT_Code,Dock_Code) VALUES(@partnumber,@srctcode,@dockcode)";
                cmd.Parameters.AddWithValue("@partnumber", partnumber);
                cmd.Parameters.AddWithValue("@srctcode", srctcode);
                cmd.Parameters.AddWithValue("@dockcode", dockcode);

                try
                
                    conn.Open();
                    cmd.ExecuteNonQuery();
                
                catch (SqlException e)
                
                   // MessgeBox.Show(e.Message.ToString(), "Error Message");
                

            
        
    

这是我的固定

【讨论】:

以上是关于如何修复 System.IndexOutOfRangeException:找不到表 0 ASP.NET的主要内容,如果未能解决你的问题,请参考以下文章

如何修复漏洞

如何修复WMI

PHP网站漏洞怎么修复 如何修补网站程序代码漏洞

如何修复这些漏洞? (npm audit fix 无法修复这些漏洞)

如何修复AppScan漏洞

如何在DOS环境下修复系统