[SQL] SqlException 3981 - 在暫止的本機交易中指定命令的連接時,此命令必須具有交易物件才可執行。 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 - 6月 13, 2022 如標題,在使用 C# 對 SQL Server 進行CRUD 時,發生此錯誤。不廢話,直接附上我的情境及解法。因為我在 IEnumerable 使用 ForEach() 中,進行 CRUD,此時推測內部的迭代器運作上對初始化交易的步驟,不如正常預期。所以改為 for(...) { // CRUD },在 for 中執行CRUD,就沒有所謂迭代器的問題,收工。 取得連結 Facebook X Pinterest 以電子郵件傳送 其他應用程式 留言
[遞迴邏輯] 採購單取得一般報價和特殊報價 - 6月 06, 2022 /// 功能目的: /// 採購單需要依照出貨的日期取得商品的報價,而商品報價有分一般報價和特殊報價。 /// 一般報價通常為全年度常態性的報價。特殊報價通常價格較低且有期間限定,且特殊報價需先使用,否則有違約的可能。 /// 功能說明: /// 1. 先準備好採購資料集合、報價單資料集合 /// 2. 依照下方的邏輯去篩選 /// 3. 主要透過採購資料集合的 Done 屬性,來判斷至否結束當前的遞迴。 不囉嗦,附上連結: .Net Fiddle | GitHub Read more »
[SQL] Oracle查無資料 (因 SESSION, NLS, AMERICA...因素) - 8月 21, 2024 如題,近期公司導入 Oracle,導致程式碼需要調整,卻遇到當前環境查無資料! 但窗口卻說權限有開了,所以紀錄下解決問題的方式。 ● 情境: 1. 窗口提供同義詞(Synonyms) 2. 因公司別不同,窗口也提供一個方法切換公司別,假設為 SET_COMPANYID_CONTEXT ● 解決思路: 1. 先詢問窗口他們使用了哪些NLS_PARAMETERS,通常會變的是 NLS_LANGUAGE,因為中文版更新頻率低,所以常使用美國版。 2. 再來就是更新當前環境的NLS_PARAMETERS,確認看看有無資料。 3. 最後就是在程式中提前設定好NLS_PARAMETERS。 Step1: 查看當前環境的 NLS_PARAMETERS -- 查詢出當前環境的 NLS_PARAMETERS SELECT * FROM V$NLS_PARAMETERS; -- 查詢出可使用的 VLS VALUE SELECT * FROM V$NLS_VALID_VALUES Step2: 當前環境執行語法,確認是否有資料 ALTER SESSION SET NLS_LANGUAGE='AMERICAN' Step3: 程式提前設定 NLS_PARAMETERS 重點是要在每個 connection 連接後,提前設定即可。 //... using (var sessionCommand = connection.CreateCommand()) { // 修改 NLS_LANGUAGE sessionCommand.CommandText = "ALTER SESSION SET NLS_LANGUAGE='AMERICAN'"; sessionCommand.ExecuteNonQuery(); // 修改 NLS_DATE_LANGUAGE (假設比對結果有差異就要加上) sessionCommand.CommandText = "ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN'"; sessionCommand.ExecuteNo... Read more »
[C#]RBK(8進制)和字串互轉 - 6月 27, 2021 因特殊需求,需要實作該功能,主要功能的轉換是類似以下範例: "\304\343\272\303" => "你好" 不廢話,附上程式碼。 // 中文轉Rbk8進制 private void button1_Click(object sender, EventArgs e) { string hz = this.richTextBox1.Text; byte[] gbk = Encoding.GetEncoding("GBK").GetBytes(hz); string s1 = ""; foreach (byte b in gbk) { s1 += $"\\{Convert.ToString(b, 8)}"; } this.richTextBox2.Text = s1; } // Rbk8進制轉中文 private void button2_Click(object sender, EventArgs e) { string cd = this.richTextBox1.Text; string[] b4 = RemoveEmptyString(cd.Split('\\')); byte[] bs = new byte[b4.Length]; for (int i = 0; i < b4.Length; i++) { bs[i] = (byte)Convert.ToByte(b4[i], 8); } this.richTextBox2.Text = Encoding.GetEncoding("GBK").GetString(bs); } // 移除空字串 private string[] RemoveEmptyString(string[] strArr) { List strList = new List (); ; foreach (var item in strArr) { if (!string.IsNullOr... Read more »
留言
張貼留言