【发布时间】:2014-04-06 01:01:15
【问题描述】:
我收到以下错误 错误 26 无法隐式转换类型 “对象”到“字符串”。存在显式转换(您是否缺少 演员?) 在这一行字符串 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();
}
【问题讨论】:
-
究竟在哪一行?
rd[0]的值究竟是多少?调试您的代码并告诉我们。 -
您的代码没有显示任何对象到字符串的分配...您能澄清哪一行标记了这个错误吗?另外:异常处理是多余的,应该删除
-
@Trafz 不,这是个坏建议;
using处理该问题;在Close()中添加一个额外的try/finally是没有意义的 - 并引入了更多出错的地方。不要那样做。using很好。 -
哦。删除了不好的建议。我仍然使用 try-catch-finally 而不是使用,因为我不确定它是否真的关闭了它。我想我不应该了。
-
这一行是怎么编译SqlDataReader rd = new SqlDataReader()的?不应该是SqlDataReader dr = cmd2.ExecuteReader()?