我在下面的代码中遇到一些错误可以帮助吗?
错误无法从'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
}
如何解决这个问题?
答案 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];