C # Datatable Search операция закрывает форму Windows без каких-либо ошибок - PullRequest
0 голосов
/ 19 сентября 2019

В моей программе я загружаю файл Excel и создаю из него данные.Я должен сделать операцию поиска в файле Excel.Я думаю, мой стиль поиска неправильный.Поскольку я выполняю линейный поиск для поиска своего элемента

for(int i = 0; i < dt.Rows.Count; i++)
{
     if(dt.Rows[i][UIDDecIndex].ToString() == UIDS)
     {

           flag = 1;
           Tetikle(dt.Rows[i][OgrenciNumarasiIndex].ToString());
     }
}

Когда я загрузил файл Excel, содержащий 13 000 строк, на моем компьютере проблем нет.Но когда я пытаюсь использовать медленный компьютер, Windows закрывается без каких-либо ошибок.(Я имею в виду, что окно формы закрывается при поиске);

это мой код конвертации, но он запускается только во время загрузки;

 public static DataTable ConvertExcelToDataTable(string FileName)
    {
        DataTable dtResult = null;
        int totalSheet = 0; //No of sheets on excel file  
        using (OleDbConnection objConn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1;';"))
        {
            objConn.Open();
            OleDbCommand cmd = new OleDbCommand();
            OleDbDataAdapter oleda = new OleDbDataAdapter();
            DataSet ds = new DataSet();
            DataTable dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
            string sheetName = string.Empty;
            if (dt != null)
            {
                var tempDataTable = (from dataRow in dt.AsEnumerable()
                                     where !dataRow["TABLE_NAME"].ToString().Contains("FilterDatabase")
                                     select dataRow).CopyToDataTable();
                dt = tempDataTable;
                totalSheet = dt.Rows.Count;
                sheetName = dt.Rows[0]["TABLE_NAME"].ToString();
            }
            cmd.Connection = objConn;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "SELECT * FROM [" + sheetName + "]";
            oleda = new OleDbDataAdapter(cmd);
            oleda.Fill(ds, "excelData");
            dtResult = ds.Tables["excelData"];
            objConn.Close();
            return dtResult; //Returning Dattable  
        }
    }

я должен использовать sqlite вместо datatable?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...