Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法检查数据库中是否存在文本文件中的数据?_C#_Asp.net - Fatal编程技术网

C# 有没有办法检查数据库中是否存在文本文件中的数据?

C# 有没有办法检查数据库中是否存在文本文件中的数据?,c#,asp.net,C#,Asp.net,使用流读取器读取文本文件(.txt)数据,然后将其保存到数据库。当用户试图读取/保存相同的文本文件时,是否有方法检查数据库中是否存在相同的数据 这是浏览和打开文本文件的代码: OpenFileDialog openFileDialog1 = new OpenFileDialog { InitialDirectory = @"C:\", Title = "Browse Text Files", CheckFileExists = true, CheckPathEx

使用流读取器读取文本文件(.txt)数据,然后将其保存到数据库。当用户试图读取/保存相同的文本文件时,是否有方法检查数据库中是否存在相同的数据

这是浏览和打开文本文件的代码:

OpenFileDialog openFileDialog1 = new OpenFileDialog
{
    InitialDirectory = @"C:\",
    Title = "Browse Text Files",

    CheckFileExists = true,
    CheckPathExists = true,

    DefaultExt = "txt",
    Filter = "txt files (*.txt)|*.txt",
    FilterIndex = 2,
    RestoreDirectory = true,

    ReadOnlyChecked = true,
    ShowReadOnly = true
};

if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
    textBox1.Text = openFileDialog1.FileName;
}
这是读取数据并将其保存到数据库的代码:

if (textBox1.Text != "")
{
    List<string> names = new List<string>();
    string message = "Data Submitted Successfully";

    string line;
    using (SqlConnection con = new SqlConnection("Data Source=THABO\\SQLEXPRESS;Initial Catalog=Airtime;Integrated Security=True"))
    {
        con.Open();
        using (StreamReader file = new StreamReader(@textBox1.Text))
        {
            while ((line = file.ReadLine()) != null)
            {
                string[] fields = line.Split('|');

                SqlCommand cmd = new SqlCommand("INSERT INTO Voucher(Currency,Nomination) VALUES (@Currency,@nomination,)", con);
                cmd.Parameters.AddWithValue("@currency", fields[0].ToString());
                cmd.Parameters.AddWithValue("@nomination", fields[1].ToString());
                cmd.ExecuteNonQuery();
            }
        }
        con.Close();

    }
}
if(textBox1.Text!=“”)
{
列表名称=新列表();
string message=“数据提交成功”;
弦线;
使用(SqlConnection con=newsqlconnection(“数据源=THABO\\SQLEXPRESS;初始目录=Airtime;集成安全性=True”))
{
con.Open();
使用(StreamReader文件=新的StreamReader(@textBox1.Text))
{
而((line=file.ReadLine())!=null)
{
string[]fields=line.Split(“|”);
SqlCommand cmd=新的SqlCommand(“插入凭证(货币,提名)值(@Currency,@namification,)”,con);
cmd.Parameters.AddWithValue(“@currency”,字段[0].ToString());
cmd.Parameters.AddWithValue(“@namification”,字段[1].ToString());
cmd.ExecuteNonQuery();
}
}
con.Close();
}
}

代码运行良好,我想验证(因此用户无法将相同的数据从文本文件保存/读取到数据库)

如果您想知道,如果它是完全相同的文本文件,您应该在数据库中保存额外的元信息,因为进行精确比较(取决于文件大小)非常昂贵。根据您的场景,您可以将文件名、大小、创建日期和/或文件的哈希(例如SHA-256)保存为附加元数据。当您获得一个新文件时,您会从数据库中文件大小相同的所有文件中请求元数据。然后,您可以进行其他检查,如名称、创建日期或计算新文件的哈希值,并将其与您已经获得的哈希值进行比较。如果至少哈希匹配,那么它就是同一个文件。

我看不懂标题,都是大写字母,你的大写字母锁定键是否粘住了?嘿@Riley BOW-T,请检查此线程并按照标准编辑问题。如果文本文件包含小词或小字符,那么你也可以用同样的方式进行搜索,但是如果你存储了一些复杂的数据,那么我认为它会很混乱。你可以使用
.contains
进行检查,例如
如果(“file.contains”(“this”){then…}