错误无法从'object'转换为'string'

时间:2011-03-25 22:26:44

标签: c# asp.net

我在下面的代码中遇到一些错误可以帮助吗?

  

错误无法从'object'转换为'string''System.IO.File.Exists(string)'的最佳重载方法匹配有一些无效的参数

string theUserId = Session["UserID"].ToString();
OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=gymwebsite2; User=x; Password=x;");
cn.Open();

OdbcCommand sc = new OdbcCommand(string.Format("SELECT picturepath FROM Pictures WHERE UserID ='{0}'", theUserId), cn);
OdbcDataReader reader = sc.ExecuteReader();
while (reader.Read())
{
if (System.IO.File.Exists(reader[0]))
{  // error cannot convert from 'object' to 'string'
   // The best overloaded method match for 'System.IO.File.Exists(string)' has some invalid arguments
    System.IO.File.Delete(reader[0]);
}  // error cannot convert from 'object' to 'string'
   // The best overloaded method match for 'System.IO.File.Delete(string)' has some invalid arguments
}

如何解决这个问题?

4 个答案:

答案 0 :(得分:8)

reader[0]替换为:

reader.GetString(0)

Convert.ToString(reader[0])

(因为reader[0]用于任意数据,因此输入为object - 但该方法需要string

答案 1 :(得分:0)

快速解决方案是:

// note addition of "as string"
if (System.IO.File.Exists(reader[0] as string))

但是你应该确定该位置的元素确实是一个字符串。

答案 2 :(得分:0)

如果reader [0]确实是一个字符串对象,reader [0] .ToString()将返回字符串值。

在调试时,您可以通过在即时窗口中调用get类型方法来检查reader [0]的类型。

e.g。读者[0] .GetType()

答案 3 :(得分:0)

OleDbDataAdapter da = new OleDbDataAdapter("select fact_code,fact_cost,fact_date from factor where fact_date between '" + int.Parse(comboBox2.SelectedItem )+ "/" + int.Parse(comboBox1.SelectedItem) + "/" + int.Parse(comboBox3.SelectedItem) + "'and '" + int.Parse(comboBox5.SelectedItem) + "/" + int.Parse(comboBox4.SelectedItem) + "/" + int.Parse(comboBox6.SelectedItem) + "'", con);
                DataSet dt = new DataSet();
                da.Fill(dt);
                dataGridView1.DataSource = dt.Tables[0];