2014-04-05 53 views
1

我收到以下错误错误26无法将类型 'object'隐式转换为'string'。存在明确的转换(您是否遗漏了 转换?) ON THIS LINE string str = rd [0] .ToString();当尝试获取文件路径字符串任何人都可以错误无法将类型'object'隐式转换为'string'。存在明确的转换(您是否缺少演员?)

感谢理清我 问题提前

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();    

      } 
+1

在哪条线上? “rd [0]”的值究竟是什么?调试您的代码并告诉我们。 –

+0

你的代码不会显示任何对象到字符串的赋值......你能澄清哪一行标记了这个错误吗?另外:该异常处理是多余的,应该删除 –

+1

@Trafz不,这是不好的建议; '使用'处理这个问题;将'try' /'finally'加入'Close()'是没有意义的 - 并且引入更多的地方来犯错误。不要那样做。 '使用'很好。 –

回答

0

我可以不会重现这个问题;它应该可以正常工作。有,但是,2个问题:

  • 创建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(); 
相关问题