簡體   English   中英

C#:SQL reader.read() 判斷連接是否中斷

[英]C# : SQL reader.read() determine if connection is interrupted

我有一個顯示文本文件數據的數據表。 然后,此數據表將用於更新與數據庫中的 ID 與文本中的 ID 匹配的一行/多行。 一個場景將是這樣的:

文本文件:

[TxtId][名稱][地址]

1 約翰地方123
2個地方456
3 jes place789

數據庫表:

[Id][TxtId][項目]

1 1 袋
2 1 鉛筆
3 1 筆
4 2袋

我想知道在這一行中,textfile 中的 id 是否與表中的 txtid 匹配。 它將執行一次更新,同時,它會在閱讀器的每一行中生成一個日志文件,以查看數據是否真的更新了,然后在所有匹配的情況下,它會在更新計數器中增加一個計數器id 更新到數據庫,否則錯誤計數將增加。 現在,我的問題是我如何知道while(reader.read())是否正在讀取最后一行,以便我知道文本文件中的 id 1 已完全更新到數據庫

您的過程是一個標准的 ETL 過程。 ETL 代表提取、轉換、加載——這就是您在這里所做的。 互聯網上有很多關於 ETL 以及如何執行它們的信息,如果可以,我建議您閱讀它。

對於您的情況,標准過程是有一個稱為“暫存表”的特殊表,您可以將新數據加載到其中作為第一步。 然后您可以在您的數據庫中使用該表來進行比較和更新。 從“暫存表”更新“生產表”的業務規則與編寫一個從兩個不同位置(一個文本文件和一個DB表)讀寫的C#程序相比,它試圖執行業務規則是相對簡單的.

你的業務規則對我來說不是 100% 清楚,但看起來如果你有一個臨時表,它們可以通過 SQL 中的一個 UPDATE 查詢來完成(如果你也必須做一些刪除,可能是兩個。)我想你已經看到了一個查詢比您試圖找出的邏輯要簡單得多,以使其在沒有臨時表的情況下工作。

所以這是我在這里推薦的方法——制作一個臨時表,然后使用該表進行比較和更新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM