[英]Specified cast is not valid. Is it because I am attempting to cast an object?
我有以下 C# 代碼,用於嘗試查詢 oracle 數據庫。 我只是想獲得數字結果,以便我可以將其輸出到控制台並最終將其保存在一個變量中。
我不斷收到以下錯誤:
System.InvalidCastException:指定的強制轉換在 Oracle.DataAccess.Client.OracleDataReader.GetInt32(Int32 i) 中無效
我在 Windows 專業機器上使用 VS 2012。 如果我需要添加其他信息,請告訴我。 非常感謝任何幫助。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
using System.Configuration;
using System.Data.SqlClient;
namespace OB_837_File_Reconciliation_Rpt_Automation
{
class Program
{
static void Main(string[] args)
{
OracleConnection dbConnection;
string connectionString = "Data Source=(DESCRIPTION=(ADDRESS= (PROTOCOL=TCP)(HOST=*******)(PORT=******))(CONNECT_DATA=(SERVICE_NAME=******)));User ID=*****;Password=*********";
try
{
dbConnection = new OracleConnection(connectionString);
string query = "select count (*) AS AMG_Prof from wellmed_owner.claim c inner join WELLMED_OWNER.payment_detail pd on c.claim_id = pd.claim_id where c.claim_status in ('6','8','C') and c.insured_group_id in ('ASA','AEP') and c.form_type = '1' and trunc(pd.paid_date) = trunc(sysdate -4)";
dbConnection.Open();
OracleCommand comm = new OracleCommand(query, dbConnection);
OracleDataReader rdr = comm.ExecuteReader();
rdr.Read();
int count = (int)comm.ExecuteScalar();
Console.WriteLine(count);
//int num = rdr.GetInt32(0);
//Console.WriteLine(count);
Console.WriteLine("Connecting Okay");
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
}
}
使用ExecuteScalar
dbConnection.Open();
OracleCommand comm = new OracleCommand(query, dbConnection);
decimal count = (decimal)comm.ExecuteScalar();
Console.WriteLine(count);
Console.WriteLine("Connecting Okay");
您的查詢僅返回一個值,因此請使用 ExecuteScalar 而不是 ExecuteReader。
Object result = comm.ExecuteScalar ();
if(result != null)
{
decimal count = (decimal) result;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.