Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.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# SQLDataAdapter.Fill错误_C#_Sqlcommand - Fatal编程技术网

C# SQLDataAdapter.Fill错误

C# SQLDataAdapter.Fill错误,c#,sqlcommand,C#,Sqlcommand,当在下面的代码中使用时,我遇到了一个错误。并非所有的记录都是这样。但在5000笔交易中,至少有10次我的错误率低于这个数字。我交叉检查了数据库中的数据,数据很好,但我不确定为什么会出现这个错误。请您帮助我展示代码实现的正确路径 Service Method: public List GetStockPIN(string sInput) { List listStockInfo = new List(); try { DEBUG("Info from Get

当在下面的代码中使用时,我遇到了一个错误。并非所有的记录都是这样。但在5000笔交易中,至少有10次我的错误率低于这个数字。我交叉检查了数据库中的数据,数据很好,但我不确定为什么会出现这个错误。请您帮助我展示代码实现的正确路径

Service Method:

public List GetStockPIN(string sInput)
{
    List listStockInfo = new List();

    try
    {

    DEBUG("Info from GetStockPIN : ", sInput);
    // Parse request string 
    Parseparams(sInput);
    string sTerminalId = GetValue("TerminalId");
    string sMerchantId = GetValue("MerchantId");
    string sBankCode= GetValue("BankCode");
    string sAppId = GetValue("AppId");
    string sProductName = GetValue("ProductName");
    string sDenomName = GetValue("DenomName");
    string sQTY = GetValue("QTY");

    StockRepository objStockRepository = new StockRepository(sConString) { DenomName = sDenomName, ProductName = sProductName, TerminalId = sTerminalId, Qty = Convert.ToInt32(sQTY) };
    listStockInfo = objStockRepository.GetStockPIN();
    return listStockInfo;
    }
    catch (Exception ex)
    {
    DEBUG("Error from GetStockPIN : ", ex);
    return listStockInfo;
    }
}
Database Access Method:

public List  GetStockPIN()
       {
           DataTable dtrec = new DataTable();
           List objStockInfo = new List();
           SqlConnection conn = null;
           try
           {
               using (conn = new SqlConnection(sConnectionString))
               {
                   using (SqlCommand cmd = conn.CreateCommand())
                   {


                       cmd.CommandType = CommandType.StoredProcedure;
                       cmd.CommandText = "prc_GetStockPIN";
                       cmd.Parameters.Add(new SqlParameter("@TerminalId", SqlDbType.NVarChar));
                       cmd.Parameters["@TerminalId"].Value = TerminalId;

                       cmd.Parameters.Add(new SqlParameter("@ProductName", SqlDbType.VarChar));
                       cmd.Parameters["@ProductName"].Value = ProductName;

                       cmd.Parameters.Add(new SqlParameter("@DenomName", SqlDbType.VarChar));
                       cmd.Parameters["@DenomName"].Value = DenomName;

                       cmd.Parameters.Add(new SqlParameter("@Qty", SqlDbType.Int));
                       cmd.Parameters["@Qty"].Value = Qty;

                       conn.Open();
                       using (SqlDataAdapter da = new SqlDataAdapter(cmd))
                       {
                          da.Fill(dtrec);                          
                       }

               //Some additional code that generates List

                   }
               }
           }
           catch (Exception error)
           {
               throw error;
           }
           finally
           {
               if (conn != null)
               {
                   try
                   {
                       conn.Close();
                   }
                   catch (Exception ex)
                   {
                   }
               }
           }
           return objStockInfo;
       }
    }
以下是异常输出:

DEBUG : Error from GetStockPIN : at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() at System.Data.SqlClient.SqlDataReader.get_MetaData() at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior) at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable) at TAMSBulkPIN.DAL.StockRepository.GetStockPIN() at TAMSBulkPIN.BulkPINSVC.GetStockPIN(String sInput)
将连接名称传递给dataadapter对象

using (SqlDataAdapter da = new SqlDataAdapter(cmd,/* your connection object*/))
{
   try
   {
      da.Fill(dtrec);
   }
}

用try/catch包装它,并记录异常的消息和innerexception。

对于某些行,您的数据可能具有某种高精度


数据适配器不填充这些行。相反,它将抛出异常。检查代码中的十进制数据类型。

您是否也可以提供您接收到的实际错误消息,因为您提供的堆栈跟踪实际上并未显示此信息。@MartinParkin我提供了使用我的代码获得的异常详细信息。