C# 错误 ;26 ;无法隐式转换类型';对象';至';字符串';。存在显式转换(是否缺少强制转换?)
我得到以下错误错误26无法隐式转换类型 “对象”到“字符串”。存在显式转换(是否缺少 转换?在这一行上字符串str=rd[0].ToString();当尝试以字符串形式获取文件路径时,有人能整理出我的 问题 提前谢谢C# 错误 ;26 ;无法隐式转换类型';对象';至';字符串';。存在显式转换(是否缺少强制转换?),c#,asp.net,sql,C#,Asp.net,Sql,我得到以下错误错误26无法隐式转换类型 “对象”到“字符串”。存在显式转换(是否缺少 转换?在这一行上字符串str=rd[0].ToString();当尝试以字符串形式获取文件路径时,有人能整理出我的 问题 提前谢谢 try { using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].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;
}
我也尝试了这个,但是得到了同样的错误
我无法复制这个问题;它应该很好用。然而,有两个问题:
- 错误地创建
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
}
}
}
请注意,如果只需要一行,ExecuteScalar
更简单:
cmd.CommandText = query;
con.Open();
string str = (string) cmd.ExecuteScalar();
具体在哪一行?
rd[0]
的值到底是多少?调试您的代码并告诉我们。您的代码未显示任何对象到字符串的分配。。。您能否澄清哪一行标记此错误?另外:异常处理是冗余的,应该removed@Trafz不,那是个坏建议;使用的处理这个问题;在Close()
中添加一个额外的try
/finally
是毫无意义的,并且会引入更多的出错位置。不要那样做<代码>使用
就可以了。不好的建议被删除。我仍然使用try-catch-finally而不是使用,因为我不确定它是否真的关闭了它。我想我不应该再这样了。这行代码是如何编译SqlDataReader rd=new SqlDataReader()的?它不应该是SqlDataReader dr=cmd2.ExecuteReader()吗?
cmd.CommandText = query;
con.Open();
string str = (string) cmd.ExecuteScalar();