簡體   English   中英

錯誤26無法將類型'object'隱式轉換為'string'。 存在顯式轉換(您是否缺少演員表?)

[英]Error 26 Cannot implicitly convert type 'object' to 'string'. An explicit conversion exists (are you missing a cast?)

我收到以下錯誤錯誤26無法將類型'object'隱式轉換為'string'。 此行上存在顯式轉換(是否缺少強制轉換?) string str = rd [0] .ToString(); 當嘗試獲取字符串中的文件路徑時,誰能解決我的問題

提前致謝

try
{
    using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString()))
    {
        SqlCommand cmd = new SqlCommand();

        String query = "select [PDFFilePath] from [dbo].[AdmPDFManage] Where [PdfId] = (SELECT MAX([PdfId]) FROM [dbo].[AdmPDFManage]) ";
        cmd.Connection = con;
        cmd.CommandText = query;
        con.Open();
        SqlDataReader rd = new SqlDataReader();
        while (rd.Read())
        {
            string str = rd[0].ToString();

        }
    }
}
catch (Exception ex)
{
    throw;
}

我也嘗試這個但得到同樣的錯誤

using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString()))
            {
                SqlCommand cmd = new SqlCommand();

                String query = "select [PDFFilePath] from [dbo].[AdmPDFManage] Where [PdfId] = (SELECT MAX([PdfId]) FROM [dbo].[AdmPDFManage]) ";
                cmd.Connection = con;
                cmd.CommandText = query;
                con.Open();

                String PDFfilePath = (String)cmd.ExecuteScalar();              

            }

我無法重現該問題; 它應該工作正常。 但是,存在兩個問題:

  • 錯誤地創建SqlDataReader
  • 不使用配置項中的.ConnectionString

以下可以正常編譯:

using (var con = new SqlConnection(
    ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
using (var cmd = con.CreateCommand())
{
    const string query = "select [PDFFilePath] from [dbo].[AdmPDFManage] Where [PdfId] = (SELECT MAX([PdfId]) FROM [dbo].[AdmPDFManage]) ";
    cmd.CommandText = query;
    con.Open();
    using(var rd = cmd.ExecuteReader())
    {
        while (rd.Read())
        {
            string str = rd[0].ToString();
            // .. do something
        }
    }
}

請注意,如果僅期望1行,則ExecuteScalar會更簡單:

cmd.CommandText = query;
con.Open();
string str = (string) cmd.ExecuteScalar();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM