我的代码是这样工作的:当我在文件夹中创建文件时,数据库将获取有关该文件的信息。|
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 做点什么。但我不知道如何确保他选择了正确的 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();
}
我的事件已重命名。
最佳答案
据我了解,您需要在文件重命名时更新数据库。要在文件修改时收到通知,您可以使用 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();
}
关于c# - 如何使用 id 代码更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17313468/