我的代码是这样的:当我在文件夹中创建文件时,数据库将获取有关该文件的信息。|
query = "INSERT INTO files (name,size,last_edit,extension) VALUES('" + name + "','" +
size + "',now(),'" + extension + "')";
这是一个例子。 当我更改文件时,数据库将更新有关该文件的信息。 当我删除文件时,数据库将删除有关文件的信息
我的问题是:现在当我在文件夹中重命名时,如何在数据库中重命名?因为我无法想到在“Where ... =”中使用的任何东西 大小不会工作,名称不会工作(因为名称被更改),last_edit不会工作(因为它一直在变化),扩展不会工作(因为可能有多个文件具有相同的扩展名。所以我创建了一个主键(ID )
这就是我创建表格的方式:
create table files (ID int not null auto_increment,name varchar(50),size
int,last_edit datetime,extension varchar(5), primary key (id));
我以为我可以用ID做点什么。但我不知道如何确保他选择正确的身份证。
private void fileSystemWatcher1_Renamed(object sender, System.IO.RenamedEventArgs e)
{
listBox1.Items.Add("File renamed> " + e.FullPath + " -Date:" + DateTime.Now);
name = e.Name;
extension = Path.GetExtension(e.FullPath);
size = e.Name.Length;
query = "update files set name='"+name+"' where ID=";
query();
}
我的活动已重命名。
答案 0 :(得分:1)
据我所知,您需要在重命名文件时更新数据库。要在修改文件时收到通知,您可以使用System.IO.FileSystemWatcher
类。
例如:
static void Main(string[] args)
{
//Creating test file. Can be removed.
File.WriteAllText("test.txt", "test");
// object that will watch changes for your file on file system
string path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location); //get current path.
var watcher = new FileSystemWatcher(path);
watcher.Renamed += watcher_Renamed;
watcher.EnableRaisingEvents = true;
}
private static void watcher_Renamed(object sender, RenamedEventArgs e)
{
// This event is fired when file is renamed. Do your own stuff here.
Console.WriteLine(e.OldName + " => " + e.Name);
}
修改强>
private void fileSystemWatcher1_Renamed(object sender, System.IO.RenamedEventArgs e)
{
listBox1.Items.Add("File renamed> " + e.FullPath + " -Date:" + DateTime.Now);
name = e.Name;
extension = Path.GetExtension(e.FullPath);
size = e.Name.Length;
query = "update files set name='"+name+"' where `name`='" + e.OldName + "'";
query();
}