我现在出现的问题是可以把数据库里的数据删除了、可是图片仍然在指定的文件夹里、我想再删除数据的同事也能连图片一起删掉【我在添加的时候有一项上传图片,图片上传之后就保存到了我指定的文件夹内了(在webUI目录下)当我要删除刚才添加的那条数据的时候,能否连文件夹里的图片(就是刚刚上传的那个图片)也一起删除了,怎么才能做到啊,我现在就能把那条数据从数据库里把它删除、那张图片仍然还在、我想在删除的时候让图片和数据一起消失,最好是能说的详细些,有代码例子最好了】
调试欢乐多
然后在File.Delete(path);
成功后再删除数据
从数据库中取出这个图片的路径。然后传入方法 删除
///
/// 删除文件和目录
///
public class Cleaner
{
///
/// 删除指定目录以及该目录下所有文件
///
/// 欲删除文件或者目录的路径
public static void Clean ( string dir )
{
CleanFiles ( dir );//第一次删除文件
CleanFiles ( dir );//第二次删除目录
}
private static void CleanFiles( string dir)
{
if ( !Directory.Exists ( dir ) )
{
File.Delete ( dir );
return;
}
else
{
string[] dirs = Directory.GetDirectories ( dir );
string[] files = Directory.GetFiles ( dir );
if ( 0 != dirs.Length )
{
foreach ( string subDir in dirs )
{
if ( null == Directory.GetFiles( subDir ) )
{
Directory.Delete( subDir );
return;
}
else CleanFiles ( subDir );
}
}
if ( 0 != files.Length )
{
foreach ( string file in files )
{
File.Delete ( file );
}
}
else Directory.Delete( dir );
}
}
}参考
例如数据库某条记录,后面要有文件路径,或是有文件id 关联文件路径。
再要删除数据的时候
先File.Delete(path);
再delete from tablename where id=要删除的id
我数据库里的字段有图片的路径imaPath那怎么才能从数据库里获取到我要删除的图片的路径呢,
string dir=Server.MapPath(//数据库图片地址);//有必须可加上你的文件夹名字例如webUI
if (Directory.Exists(dir))//这里判断一下文件夹是否存在。
{
File.Delete(dir);//存在即可删除
}
using System.IO;
public bool DeleteData(int aiID)
{
string Dsql,path;
Dsql=string.Format("删除语句 where ID={0}", aiID);
path=GetEntity(aiID);
if(File.Exists(path))
{File.Delete(path)
}
if(ExecuteSQL(Dsql)>0)
return true;
else
return false; } /// <summary>
/// 根据ID返回路径
/// </summary>
/// <param name="aiID"></param>
/// <returns></returns>
public string GetEntity(int aiID)
{
string sSql;
sSql = string.Format("select PathName from ImageManage where ID={0}", aiID);
DataTable dataTable = this.GetData(sSql, "ImageManage");
if (dataTable.Rows.Count <= 0)
{
return null;
}
else
{
return dataTable.Rows[0]["PathName"].ToString();
}
}
/// <summary>
/// 执行(SQL)语句_返回数据表
/// </summary>
/// <param name="sql"></param>
/// <param name="ATableName"></param>
/// <returns></returns>
public DataTable GetData(string sql, string ATableName)
{
DataSet ds = new DataSet();
DataTable dt = new DataTable();
try
{
SqlDataAdapter da = new SqlDataAdapter(sql, GetConnection());
da.Fill(ds, ATableName);
dt = ds.Tables[0];
}
catch (Exception e)
{
throw e;
}
finally
{
ColseConnection();
}
return dt;
}
/// <summary>
/// 连接数据库
/// </summary>
private SqlConnection conn = null;
/// <summary>
/// 得到一个打开的数据库连接
/// </summary>
/// <returns></returns>
private SqlConnection GetConnection()
{
//StartService();
if (conn == null)
{
conn = new SqlConnection();
try
{
conn.ConnectionString = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;//连接字符串
conn.Open();
}
catch (Exception)
{
throw;
}
}
if (conn.State == ConnectionState.Closed)
{
conn.Open();
}
return conn;
}
/// <summary>
/// 执行(SQL)语句_不返回数据
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public int ExecuteSQL(string sql)
{
int result = 0;
try
{
SqlCommand com = new SqlCommand(sql, GetConnection());
result = com.ExecuteNonQuery();
}
catch (Exception e)
{
throw e;
}
finally
{
ColseConnection();
}
return result;
}
/// <summary>
/// 关闭数据库连接
/// </summary>
private void ColseConnection()
{
if (conn != null) conn.Close();
}