發表文章

目前顯示的是 2023的文章

CSS重置所有屬性值

CSS重置所有屬性值 CSS 簡寫屬性all可用於將這些繼承值之一一次套用於(幾乎)所有屬性。它的值可以是任何一個繼承值(inherit、initial、revert、revert-layer或unset)。這是撤銷對樣式所做的變更的便捷方法,以便您可以在開始新的變更之前返回已知的起點。 <style> blockquote { background-color: orange; border: 2px solid blue; } .fix-this { all: unset; } </style> <blockquote> <p>This blockquote is styled</p> </blockquote> <blockquote class="fix-this"> <p>This blockquote is not styled</p> </blockquote> 第2個blockquote會移除所有CSS Style。  

CSS控制繼承

CSS控制繼承 CSS 提供了五個特殊的通用屬性值來控制繼承。每個 CSS 屬性都會接受這些值。 inherit : 將套用於所選元素的屬性值設定為與其父元素的屬性值相同。實際上,這「開啟了繼承」。 .parent { font-size: 16px; } .child { font-size: inherit; /* 子元素繼承父元素的字體大小 */ } initial : 將套用於選定元素的屬性值設定為該屬性的初始值。 .element { font-size: initial; /* 字體大小被重置為預設值 */ } revert : 將套用於選取元素的屬性值重設為瀏覽器的預設樣式,而不是套用於該屬性的預設樣式。這個值unset在很多情況下都是一樣的。 .element { font-size: revert; /* 恢復字體大小為預設值,並應用樣式表中的其他樣式 */ } revert-layer : 將套用於選取元素的屬性值重設為在前一個級聯層中建立的值。 .parent { font-size: 18px; } .child { font-size: revert-layer; /* 子元素恢復為父元素的字體大小,並在樣式表中覆蓋其他樣式 */ } unset : 將屬性重設為其自然值,這意味著如果該屬性是自然繼承的inherit,則其行為類似於 ,否則行為類似於initial。 .element { font-size: unset; /* 重置字體大小為其初始值或 initial(視屬性而定) */ }      

CSS執行優先順序

CSS執行優先順序 在 CSS 中,選擇器和連結器用於定義樣式的應用範圍和規則。在 HTML 中,你可以使用不同的方法引用 CSS 檔案,將樣式應用到 HTML 標記中。在設計網頁時,CSS 的執行優先順序很重要,以確保正確的樣式應用到正確的元素上。 以下是一些關於 CSS 選擇器及連結器、引用 CSS 檔案以及執行優先順序的重要概念: 選擇器和連結器: 選擇器(Selectors): 選擇器用於選擇要應用樣式的 HTML 元素。例如,div、.class、#id 都是選擇器。 連結器(Combinators): 連結器用於組合選擇器,以定義元素之間的關係。例如,空格表示後代選擇器,">" 表示子代選擇器,"+" 表示相鄰兄弟選擇器。 引用 CSS 檔案: 外部樣式表: 透過 < link > 標籤在 HTML 文件中引用外部 CSS 檔案。這是最常見的方式,有助於分離 HTML 結構和樣式定義。 <link rel="stylesheet" type="text/css" href="styles.css"> 內部樣式表: 在 HTML 文件的 < head > 元素中使用 < style > 標籤定義樣式。 <style> /* CSS 樣式定義 */ </style> 內聯樣式: 直接在 HTML 元素的 style 屬性中定義樣式。 <div style="color: red;">這是紅色的文字。</div> 執行優先順序: 內聯樣式 > 內部樣式表 > 外部樣式表: 如果相同的屬性在不同的位置進行定義,則內聯樣式(直接在 HTML 元素上定義)的優先順序最高,其次是內部樣式表,最後是外部樣式表。 特殊性(Specificity): 如果有多個選擇器都適用於同一元素,則通過特殊性來確定樣式的優先順序。特殊性是由選擇器的不同部分(元素、類別、ID等)組成的。 後來者優先(!important): 如果在樣式規則中使用了 !important,則該規則將優先應用,即使它的特殊性

CSS屬性區分為繼承屬性及非繼承屬性

CSS屬性區分為繼承屬性及非繼承屬性 以下為不會繼承的屬性 display margin border padding background height width border-radius border-spacing float clear position top right bottom left z-index vertical-align page-break-before page-break-after page-break-inside columns column-gap column-rule column-count column-fill column-span orphans widows

C# 從網頁下載檔案到指定路徑

C# 從網頁下載檔案到指定路徑 using (WebClient webClient = new WebClient()) { string FileOutput = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "abc.txt"); webClient.DownloadFile("http://abc/abc.txt", FileOutput); //儲存路徑一定要加完整路徑 }  

MSSQL資料庫Collation(定序)

在 Microsoft SQL Server 中,Collation(定序)是指定字符串比較和排序的規則。Chinese_Taiwan_Stroke_CI_AS 和 Chinese_Taiwan_Stroke_BIN 是兩種不同的排序規則,它們之間的主要差異在於大小寫敏感性和二進制排序的方式。 Chinese_Taiwan_Stroke_CI_AS (Case-Insensitive, Accent-Sensitive): Case-Insensitive (CI): 表示不區分大小寫,即大寫和小寫字母視為相等。 Accent-Sensitive (AS): 表示區分重音符號,即具有不同重音符號的字符被視為不同。 這種排序規則通常用於執行對中文文本進行排序和比較的操作,同時保留對大小寫和重音符號的敏感性。 Chinese_Taiwan_Stroke_BIN (Binary, Case-Sensitive, Accent-Sensitive): Binary (BIN): 表示使用二進制排序,即按字符的二進制值進行比較。 Case-Sensitive (CS): 表示區分大小寫,即大寫和小寫字母被視為不同。 Accent-Sensitive (AS): 表示區分重音符號,即具有不同重音符號的字符被視為不同。 這種排序規則將字符串視為二進制值,不區分中文字符的拼音,而是按照其二進制表示進行排序。 總的來說,如果您需要進行中文文本的排序和比較操作,通常建議使用 Chinese_Taiwan_Stroke_CI_AS,因為它在保留大小寫和重音符號敏感性的同時,提供了比較的彈性。如果您需要按照二進制方式進行排序,並且大小寫和重音符號敏感,那麼可以使用 Chinese_Taiwan_Stroke_BIN。選擇排序規則取決於您的應用需求和預期的比較行為。

CSS 選擇器及連結器

CSS 選擇器及連結器 練習  https://jsfiddle.net/ 引用CSS檔案 <link rel="stylesheet" href="styles.css" /> 一個選擇器套用CSS p { color: green; } 一次選擇多個選擇器 p, li { color: green; } 移除< ul >前的清單符號 li { list-style-type: none; } 變更指定Class的元素 <style> .special { color: orange; font-weight: bold; } </style> <ul> <li>Item one</li> <li class="special">Item two</li> <li>Item <em>three</em></li> </ul> 指定特殊元素下的CLASS樣式 只有li下Class才會套用, 但div下Class不會套用 <style> li.special { color: orange; font-weight: bold; } </style> <ul> <li>Item one</li> <li class="special">Item two</li> <li>Item <em>three</em></li> </ul> <div class="special"> aaaaaaaaaaaaaaaaaaaaaaaaaa </div> 如果也希望div下Class套用 <style> li.special, div.special { color: orange; font-weight: bold; } </s

C# LINQ Lambda disinct (3)

C# LINQ Lambda disinct 若List< Class > 為多屬性的Class的LIST, 若對List直接下Distinct(), 無法取得預期去除重覆資料的結果。(即使所有欄位有重覆值, 也無效果) 若先select new 欄位屬性, 欄位數與原始相同也可, 再下Distinct(), 就可以達到去除重覆資料結果。 以下為範例程式, 資料結構 public class MyClass2 { public string A { get; set; } public string E { get; set; } public string F { get; set; } } List<MyClass2> list_myClass2 = new List<UserQuery.MyClass2>(); list_myClass2.Add(new MyClass2() { A = "A1", E = "E1", F = "F1" }); list_myClass2.Add(new MyClass2() { A = "A2", E = "E2", F = "F2" }); list_myClass2.Add(new MyClass2() { A = "A2", E = "E2", F = "F2" }); list_myClass2.Add(new MyClass2() { A = "A3", E = "E4", F = "F4" }); list_myClass2.Add(new MyClass2() { A = "A3", E = "E4", F = "F4" }); list_myClass2.Add(new MyClass2() { A = "A4", E = "E6", F = "F6" }); CASE-1 var query1

CSS, Table TD裡有多個元件, 要顯示同一行

Table TD裡有多個元件, 要顯示同一行 HTML <table class="xTableStyle"> <tr> <th>Inspected</th> <td>@Html.TextBox("txtABC", "90", new { @class = "form-control", style = "width:50px;" }) <span>%</span></td> </tr> </table> CSS .xTableStyle input { display: inline-block; /* 或者使用 inline-flex */ vertical-align: middle; /* 用來垂直置中 */ }  

Edge開發人員工具 #2 - Javascript

圖片
Edge開發人員工具 #2 - Javascript偵錯 console.log()偵錯此類問題的常用方法是在程式碼中插入多個語句,然後在腳本執行時檢查值 function updateLabel() { var addend1 = getNumber1(); console.log('addend1:', addend1); var addend2 = getNumber2(); console.log('addend2:', addend2); var sum = addend1 + addend2; console.log('sum:', sum); label.textContent = addend1 + ' + ' + addend2 + ' = ' + sum; } 利用來源右方功能debug 利用[來源>右方[事件接聽程式中斷點]>Mouse>Click], 可以在任何一個滑鼠Click事件發生時自動中斷點。或依需求勾選其他事件。 在範圍(Scope)可以看到區域變數的資料內容 新增監看, 可以帶出變數類型   ref web: https://learn.microsoft.com/zh-tw/microsoft-edge/devtools-guide-chromium/javascript/

Edge開發人員工具 #1

圖片
Edge開發人員工具 #1 在頁面上執行F12開啟開發人員工具。 根據預設, 活動列 包含下列工具: 檢查 工具 (切換按鈕) 。 裝置模擬 工具 ( ) 按鈕。 歡迎 使用工具 ( ) 。 專案 工具 ( ) 。 主控台 工具 ( ) 。 來源 工具 ( ) 。 網路 工具 ( ) 。 效 能工具 (效能 ) 。 記憶體 工具 ( ) 。 應用程式 工具 (應用程式 ) 。 根據預設, [快速檢視] 工具列包含下列工具: 主控台 工具 ( ) 。 問題 工具 ( ) 。 活動列和快速檢視工具列 有兩個工具列:DevTools 頂端的活動 列 ,以及您按 下 Esc 時底部的 [快速檢視 ] 工具列。 活動列 包含下列功能: 圖示工具: 檢查工具 (切換按鈕) 。 裝置模擬 ( ) 按鈕。 工具索引標籤: 歡迎 使用工具。 專案 工具。 永久。 主控台 工具。 永久。 來源 工具。 永久。 網路 工具。 效能 工具。 記憶體 工具。 應用程式 工具。 圖示: 將活動列向左移動 ( ) 按鈕。 [更多工具 ] ( ![其他工具] 圖示 ) 按鈕。 自訂和控制 DevTools ( ) 功能表按鈕。 [說明 ] ( ) 按鈕。 關閉 DevTools ( ) 按鈕。 ref web: https://learn.microsoft.com/zh-tw/microsoft-edge/devtools-guide-chromium/overview

C# 引用DLL的3種方式[靜態連結, 動態連結, 專案參考]

C# 引用DLL的3種方式 C#引用DLL的方式有 靜態連結(Static Linking) 動態連結(Dynamic Linking) 專案參考(Project Reference) 以下將說明運作原理、優/缺點... 靜態連結 運作原理, 靜態連結是將DLL編譯進應用程式的執行檔,使得應用程式與DLL的程式碼合併在一個執行檔中 優點: 執行速度較快,無需額外的DLL檔案 缺點: 更新DLL時,必須重新編譯應用程式 編譯時整合: DLL的程式碼在編譯時期被整合進入應用程式的執行檔 執行檔: 應用程式執行檔包含了所有必要的程式碼,無需額外的DLL檔案 應用範圍: 適用於相對較小且不經常更新的專案。若DLL需要更新,則必須重新編譯整個應用程式 部署方式: 部署時只需將單一執行檔複製到目標機器上,不需要額外的DLL // 使用DllImportAttribute進行靜態連結 using System.Runtime.InteropServices; class Program { // 声明 DLL 文件的路径 const string dllPath = "YourDll.dll"; // 声明 DLL 中的函数 [DllImport(dllPath)] public static extern int YourFunction(); static void Main() { // 调用 DLL 中的函数 int result = YourFunction(); Console.WriteLine($"Result from DLL: {result}"); } }   動態連結 運作原理, 在執行時期,應用程式會動態載入DLL,並使用其功能, 使用 System.Reflection 或其他方法動態調用 DLL 中的函數 優點: 更新DLL不需要重新編譯應用程式 缺點: 需要確保DLL存在於執行目錄或系統路徑 編譯時整合: DLL的程式碼在編譯時期並未整合進應用程式,僅在執行時期動態載入 執行檔: 應用程式執行檔不包含DLL程式碼,需要確保DLL存在

ASP.NET MVC 使用Ajax Post 檔案到Controller

ASP.NET MVC 使用Ajax Post 檔案到Controller HTML CODE: <form id="myForm"> <!-- 資料列1 --> <input type="text" name="formDataList[0].Field1" value="Value1A" /> <!-- 為了讓Controller接值可以對應, 一定要相同參數名稱[formDataList]及流水號, 且流水號一定要由0開始 --> <input type="text" name="formDataList[0].Field2" value="Value1B" /> <input type="file" name="formDataList[0].File" /> <!-- 資料列2 --> <input type="text" name="formDataList[1].Field1" value="Value2A" /> <input type="text" name="formDataList[1].Field2" value="Value2B" /> <!-- 沒有檔案 --> <!-- 資料列3 --> <input type="text" name="formDataList[2].Field1" value="Value3A" /> <input type="text" name="formDataList[2].Field2" value="Value3B" /> <inp

ASP.NET MVC Partial View用法

ASP.NET MVC Partial View用法 當你想在ASP.NET MVC應用程序中重複使用某個視圖的一部分時,你可以使用Partial View。Partial View允許你將視圖分割為多個可重用的部分,這樣你就可以在應用程序的多個地方使用它。 以下是一個簡單的Partial View使用方法範例: 假設你有一個名為"_UserDetails.cshtml"的Partial View,它顯示用戶的詳細信息。首先,讓我們創建這個Partial View: <!-- _UserDetails.cshtml --> @model YourNamespace.Models.User <div> <h3>@Model.UserName</h3> <p>Email: @Model.Email</p> <p>Age: @Model.Age</p> <!-- 其他用戶詳細信息... --> </div> 現在,假設你有一個名為"UserController"的控制器,你想在不同的視圖中顯示用戶的詳細信息。首先,在你的控制器中獲取用戶數據,然後在視圖中呼叫Partial View: // UserController.cs using System.Web.Mvc; using YourNamespace.Models; public class UserController : Controller { public ActionResult UserDetails(int userId) { // 假設這裡有一些代碼來檢索用戶數據 User user = GetUserById(userId); // 將用戶數據傳遞給Partial View return PartialView("_UserDetails", user); } private User GetUserById(int userId) { // 實現

List和string的Contains方法, 用法有些不同

List和string的Contains方法, 用法有些不同 List.Contains 檢查列表中是否包含指定元素, 完整比對 // 假設有一個 List<string> 包含一些字串 List<string> stringList = new List<string> { "AA", "AB", "AC", "A" }; // 檢查 List 中是否包含指定的字串 string targetString = "A"; bool containsTarget = stringList.Contains(targetString); //返回True ==> 包含"A" // 檢查 List 中是否包含指定的字串 string targetString = "C"; bool containsTarget = stringList.Contains(targetString); //返回Flase ==> 不包含"C"   string.Contains 檢查一個字串是否包含另一個字串(模糊比對) string text = "Hello, World!"; bool containsHello = text.Contains("Hello"); // 返回 true   整合範例: 使用listB找出listA有符合部份字串的資料 //變數宣告 List<string> listA = new List<string> { "ABC_123", "ABC_456", "EEE_111", "DDD_222" }; List<string> listB = new List<string> { "ABC", "EEE" }; // 使用 LINQ 查詢,找出符合條件的資料 var result = listA.Where(i

JQuery 載入網頁至DIV時, 增加載入失敗CallBack

JQuery 載入網頁至DIV時, 增加載入失敗CallBack $('#div_content').load('_GetList?' + 'AA=' + AA + '&BB=' + BB function (response, status, xhr) { if (status == "error") { var msg = "Error!" + xhr.status + " " + xhr.statusText; alert(msg); } });      

使用LINQ, Lambda達到SQL in 多欄位寫法

使用LINQ, Lambda達到SQL in 多欄位寫法 不能直接對SQL LINQ使用Contains List<string> list_Name = new List<string>() { "Alex", "Peter"}; //不支援Contains語法 //var query = from t1 in db.Table1 // where list_Name.Contains(t1.Name) // select t1; var query = from t1 in db.Table1 select t1; //query = query.Where(x => list_ima01.Contains(x.Ima01)); //不支援Contains語法 query = query.where(x => list_Name.Any(a => a == x.Name); //改用Any var list = query.ToList();   先把SQL LINQ 進行ToList為Object後, 就可以使用Contains List<string> list_AAA = new List<string>() { "123", "456", "789"}; var query = from t1 in AAA select t1; var list = query.ToList(); //先ToList var q2 = list.Where(x => list_AAA.Contains(x.A)); //就可以對Object LINQ使用Contains var list_q2 = q2.ToList();        

JQuery selector範例

JQuery selector範例 取得第一個找到的 li 標籤元素 $("li:first"); //jQuery li:first {} //CSS 取得其 class 屬性值為class1 的 input元素 $("input[class='class1']"); //jQuery input[name='newsletter'] {} //CSS 取得id為container之元素其內部的所有超連結 $(‘#container a’); //jQuery #container a {} //CSS 取得div父元素其下所有的p子元素 $("div > p"); //jQuery div > p {} //CSS 基本選擇器 jQuery 有三個最重要的選擇器,如下: $(“element”):選出所有該 element 的節點 例如: $(“p”) :選出所有<p>的節點 $(“#divId”):選出所有id=divid的節點 $(“.divClass”):選出所有class=divCLass的節點 階層選擇器 階層屬性有以下四種: 物件中的某一種物件(空白):$(‘#div1 p’).addClass(‘d1′); 物件中的所有物件(*):$(‘#div1 *’).addClass("d1); 之後符合條件的第一個(+):$(‘#div1 + p’).addClass(‘d1′); 之後符合的所有(~):$(‘#div1 ~ p’).addClass(‘d1′); 可進來這裡觀看階層選擇器範例: http://jsfiddle.net/divaka/fuHFD/1/ 子元素選擇器 $("ul li:nth-child(2)"); //第 2 個節點 $("ul li:nth-child(odd)"); //所有奇數子節點 $("ul li:nth-child(3n + 1)"); //1, 4, 7 … 個節點 $("div span:first-child") //所有的div元素的第一個子節點 $("div

JQuery, 取得各input欄位資料的JQuery寫法

取得各input欄位資料的JQuery寫法 text <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>jQuery 取得資料範例</title> <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script> </head> <body> <input type="text" id="textInput" value="Hello, World!"> <button id="getTextBtn">取得文字框的值</button> <script> $(document).ready(function(){ $('#getTextBtn').click(function(){ var textValue = $('#textInput').val(); alert('文字框的值是:' + textValue); }); }); </script> </body> </html> textarea <!-- 在上面的 HTML 檔案中加入以下程式碼 --> <select id="selectOption"> <option value="option1">選項1</option> <option value=&q

Javascript regex

Javascript regex //验证正整数+正小数+0 var checkIsPositive = (rule, value, callback) => { var reg = /^\d+(?=\.{0,1}\d+$|$)/ if(reg.test(value)) { callback() }else{ callback(new Error('请输入大于等于0的正数')) } }; //验证正整数+正小数 var checkIsPositiveEx0 = (rule, value, callback) => { ///^(\d|[1-9]\d+)(\.\d{1,2})?$/ ---->2位小数 var reg = /^(\d|[1-9]\d+)(\.\d+)?$/ if(reg.test(value)) { if(value == '0') { callback(new Error('请输入大于0的正实数')) } else { callback() } }else{ callback(new Error('请输入大于0的正实数')) } }; //验证正整数+0 var checkIsPositiveInteger = (rule, value, callback) => { var reg = /^(0|[1-9][0-9]*)$/ if(reg.test(value)) { callback() }else{ callback(new Error('请输入大于等于0的正整数')) } };  

C#, 利用dynamic宣告變數

利用dynamic宣告變數 using System; class Program { static void Main() { // 宣告 dynamic 物件 dynamic dynamicObject = new { Property1 = "Value1", Property2 = 42, Property3 = true }; // 取得屬性值 string value1 = dynamicObject.Property1; int value2 = dynamicObject.Property2; bool value3 = dynamicObject.Property3; // 顯示取得的值 Console.WriteLine($"Property1: {value1}"); Console.WriteLine($"Property2: {value2}"); Console.WriteLine($"Property3: {value3}"); } } 利用dynamic宣告空的變數, 動態指定屬性資料 using System; class Program { static void Main() { // 宣告 dynamic 變數 dynamic dynamicObject = new System.Dynamic.ExpandoObject(); // 給動態變數不同的屬性名稱和值 dynamicObject.Property1 = "Value1"; dynamicObject.Property2 = 42; dynamicObject.Property3 = true; // 讀取動態變數的屬性 string value1 = dynamicObject.Property1; int

Oracle 好用SQL

查詢Sequence SELECT * FROM all_sequences WHERE sequence_owner = 'SchemaName' AND sequence_name = 'sequence_name'; 查詢TABLE&欄位 SELECT C.OWNER ,C.TABLE_NAME as 表格名稱 , C.COLUMN_ID , C.COLUMN_NAME as 欄位名稱 , DATA_TYPE as 資料型別 , DATA_LENGTH as 長度 , DATA_PRECISION as 整數位數 , DATA_SCALE as 小數位數 , DATA_DEFAULT as 預設值 , NULLABLE as 是否允許空值 , COMMENTS as 欄位描述 FROM ALL_TAB_COLUMNS C JOIN ALL_TABLES T ON C.OWNER = T.OWNER AND C.TABLE_NAME = T.TABLE_NAME LEFT JOIN ALL_COL_COMMENTS R ON C.OWNER = R.Owner AND C.TABLE_NAME = R.TABLE_NAME AND C.COLUMN_NAME = R.COLUMN_NAME WHERE 1=1 and C.OWNER = 'SchemaName' and C.TABLE_NAME=upper('TableName') ORDER BY C.TABLE_NAME, C.COLUMN_ID Table Index SELECT * FROM DBA_IND_COLUMNS where TABLE_OWNER = 'SchemaName' -- 替換成您的模式名稱 and TABLE_NAME=upper('TableName') ORDER BY INDEX_OWNER, INDEX_NAME, COLUMN_POSITION Table PK欄位 SELECT cols.own

MSSQL好用SQL

查詢MSSQL欄位名稱/欄位型別及長度/描述欄位 SELECT a.Table_schema +'.'+a.Table_name as 表格名稱 ,b.COLUMN_NAME as 欄位名稱 ,b.DATA_TYPE as 資料型別 ,isnull(b.CHARACTER_MAXIMUM_LENGTH,'') as 長度 ,isnull(b.NUMERIC_PRECISION ,'') as 整數位數 ,isnull(b.NUMERIC_SCALE ,'') as 小數位數 ,isnull(b.COLUMN_DEFAULT,'') as 預設值 ,case when b.IS_NULLABLE='YES' then 'Y' else 'N' end as 是否允許空值 ,( SELECT value FROM fn_listextendedproperty (NULL, 'schema', a.Table_schema, 'table', a.TABLE_NAME, 'column', default) WHERE name='MS_Description' and objtype='COLUMN' and objname Collate Chinese_Taiwan_Stroke_CI_AS = b.COLUMN_NAME ) as 欄位描述 FROM INFORMATION_SCHEMA.TABLES a LEFT JOIN INFORMATION_SCHEMA.COLUMNS b ON a.TABLE_NAME = b.TABLE_NAME WHERE TABLE_T

C#, LINQ, 2個Table Join 使用1個欄位條件Join

using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { // 模拟两个表的数据 List<Table1> table1Data = new List<Table1> { new Table1 { Id = 1, CommonField = "A", Value = "Value1" }, new Table1 { Id = 2, CommonField = "B", Value = "Value2" }, new Table1 { Id = 3, CommonField = "C", Value = "Value3" } }; List<Table2> table2Data = new List<Table2> { new Table2 { Id = 101, CommonField = "A", Description = "Desc1" }, new Table2 { Id = 102, CommonField = "B", Description = "Desc2" }, new Table2 { Id = 103, CommonField = "D", Description = "Desc3" } }; // 使用 LINQ 进行连接操作 var query = from t1 in table1Data join t2 in table2Data on t1.Common

C#, LINQ, 2個Table Join 使用2個欄位條件Join

2個Table Join 使用2個欄位條件Join join的欄位名稱要相同 範例1: using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { // 假设有两个表格 List<Table1> table1Data = new List<Table1> { new Table1 { ID = 1, Name = "John" }, new Table1 { ID = 2, Name = "Alice" }, new Table1 { ID = 3, Name = "Bob" } }; List<Table2> table2Data = new List<Table2> { new Table2 { ID = 1, Age = 25 }, new Table2 { ID = 2, Age = 30 }, new Table2 { ID = 3, Age = 28 } }; // 使用 LINQ 进行两个表格的连接 var query = from t1 in table1Data join t2 in table2Data on new { t1.ID, t1.Name } equals new { t2.ID, Name = "John" } select new { t1.ID, t1.Name, t2.Age }; // 打印结果 foreach (var result in query) { Console.WriteLine($

C# Lambda List Distinct寫法(group by ... select first)

因為List<Class>要進行多欄位Distinct時, 需在Class裡Overide Equals 和 GetHashCode, 可以使用下列語法替代。參考 這篇 。 利用Group後, 取得每個Group第一組資料出來, 達到Distinct效果。 using System; using System.Collections.Generic; using System.Linq; class ClassA { public int Property1 { get; set; } public string Property2 { get; set; } public double Property3 { get; set; } public string Property4 { get; set; } public int Property5 { get; set; } } class Program { static void Main() { // 創建一個 List<ClassA> 的範例資料 List<ClassA> listOfClassA = new List<ClassA> { new ClassA { Property1 = 1, Property2 = "A", Property3 = 1.1, Property4 = "X", Property5 = 100 }, new ClassA { Property1 = 1, Property2 = "A", Property3 = 1.1, Property4 = "Y", Property5 = 101 }, new ClassA { Property1 = 2, Property2 = "B", Property3 = 2.2, Property4 = "X", Property5 = 102 }, new Cla

ATom, 修改字體顏色

  打開 File > Stylesheet 修改註解 atom-text-editor .syntax--comment { //font-style: normal; //註解非斜體 font-size: 16px; color: lightblue; } 修改文字 atom-text-editor { // color: white; // background-color: hsl(180, 24%, 12%); }

C#, ASP.NET MVC, DBEntities動態決定連線Connection Name

在 C# 中使用 Entity Framework 時,可以建立一個繼承自 DbContext 的類別,例如 ABCEntities ,並在建構子中指定連接字串的名稱。然後,根據需要在執行時更改連接字串的名稱。 using System.Data.Entity; public class ABCEntities : DbContext { // 在這裡可以添加 DbSet 屬性和其他配置項 public ABCEntities(string connectionName) : base(connectionName) { } } 然後,在使用 ABCEntities 的地方,可以根據需要設定連接字串的名稱。例如: class Program { static void Main() { // 指定連接字串的名稱 string connectionName = "YourConnectionStringName"; // 使用指定的連接字串名稱建立 ABCEntities 實例 using (var dbContext = new ABCEntities(connectionName)) { // 在這裡可以執行資料庫操作 } } } 在上述範例中,可以根據需要更改 connectionName 的值,以選擇要使用的連接字串。這種方式可以在執行時動態指定連接字串的名稱,以便根據不同的邏輯選擇不同的資料庫連線。  

MSSQL, 取得TABLE名稱

下面SQL會因為p.value不知道型態, 而發生錯誤。 SELECT t.name AS TableName, p.value AS TableDesc FROM sys.tables t LEFT JOIN sys.extended_properties p ON p.major_id = t.object_id AND p.minor_id = 0 AND p.class = 1 where (p.value is not null and p.value <> '') and upper(p.value) like '%AAA%' 因為 upper() 的傳入參數必須為字串, 所以可以把欄位型態強制轉為varchar, 解決此問題 (前題是確定p.value一定為字串) SELECT t.name AS TableName, p.value AS TableDesc FROM sys.tables t LEFT JOIN sys.extended_properties p ON p.major_id = t.object_id AND p.minor_id = 0 AND p.class = 1 where (p.value is not null and p.value <> '') AND UPPER(CAST(p.value AS NVARCHAR(MAX))) LIKE '%' + UPPER('AAA') + '%' 就可以解決問題了。  

Lambda查詢符合List內容條件的資料

LINQ查詢符合List內容條件的資料 void Main() { List<string> listA = getA(); List<string> listB = GetB(); var query = listA.Where(x => listB.Contains(x)).ToList(); query.Dump(); } public List<string> getA() { List<string> list = new List<string>(); list.Add("A"); list.Add("B"); list.Add("C"); list.Add("D"); list.Add("E"); return list; } public List<string> GetB() { List<string> list = new List<string>(); list.Add("A"); list.Add("E"); return list; }  

HTML colgroup 用法說明

< colgroup> 是 HTML 中的一個元素,用於定義表格列(columns)的屬性,通常用來設定一組列的共同樣式或行為,以簡化表格的樣式和結構設定。它通常與 元素一起使用,用來指定列的寬度、背景色、文字對齊等屬性。 以下是 < colgroup> 的一般用法說明: 定義 < colgroup> 元素:在表格 (< table>) 元素內部,你可以使用 < colgroup> 元素來定義列的屬性。通常,它會位於表格的開頭,但在表格內部的任何位置都可以。 <table> <colgroup> <col style="width: 100px;"> <col style="background-color: lightblue;"> </colgroup> <!-- 表格內容 --> </table> 使用 < col> 元素:在 < colgroup> 元素內部,你可以使用一個或多個 < col> 元素來指定不同列的屬性。這些屬性可以包括列的寬度、背景色、文字對齊等。 <colgroup> <col style="width: 100px;"> <col style="background-color: lightblue;"> </colgroup> 繼承屬性:當你在 < colgroup> 中指定列的屬性時,這些屬性將應用於整個列,除非在特定的 < col> 元素中進一步覆蓋。 節省重複代碼:使用 < colgroup> 可以幫助節省重複的 HTML 代碼,尤其是當你希望多列具有相同的樣式或屬性時,這在大型表格中特別有用。 這是一個簡單的示例,展示了 < colgroup> 和 < col> 的使用: <table> <colgroup> <col style="

Lambda Select first應用

 這個程式代碼是使用C#語言的LINQ (Language Integrated Query) 庫來操作一個列表 (List)。它包含了一個複雜的查詢 list.GroupBy(x => x.AA).Select(x => x.First()).Select(x => x.AA).ToList() 讓我們一步一步來詳細說明這些操作:  Comment list 是一個包含元素的 List,其中每個元素都具有一個名為 AA 的屬性。 GroupBy(x => x.AA):這是一個LINQ操作,它將 list 中的元素按照它們的 AA 屬性的值進行分組。這意味著相同的 AA 值的元素將被放入相同的分組中,所以你將會得到一個以 AA 屬性的值作為鍵的分組。 .Select(x => x.First()):這個操作針對每個分組中的元素,選擇該分組的第一個元素。換句話說,對於每個 AA 值,只會保留第一個具有該值的元素。這會縮小結果的集合,使其只包含每個 AA 值的一個元素。 .Select(x => x.AA):這是接著前一步操作的另一個 Select 操作,它選擇保留元素的 AA 屬性的值。 .ToList():最後一個操作將LINQ查詢的結果轉換為一個新的List,以便進一步使用或返回。 總結,這個LINQ查詢的目的是對 list 中的元素進行分組,然後只保留每個分組中的第一個元素,最終將這些第一個元素的 AA 屬性值轉為List返回。這可以用來去除具有相同 AA 值的重複元素,並僅保留每個 AA 值的第一個元素。

C#, LINQ, Table Join 關聯欄位條件需加工處理

執行會發生錯誤 var query = from data in dbContextTT.AA join t2 in dbContextTT.BB on "ABC=" + data.A1 equals t2.B1 select data; 可以正常執行 var query = from data in dbContextTT.AA join t2 in dbContextTT.BB on data.A1 equals t2.B1.Replace("ABC=", "") select data;

LINQPad新增Oracle資料庫連線

圖片
 

MSSQL Over (Partition by ... Order by ...) 範例

建立Table CREATE TABLE sales ( department VARCHAR(50), employee VARCHAR(50), sale_date DATE, amount DECIMAL(10, 2) ); INSERT INTO sales VALUES ('部門A', '員工1', '2023-01-01', 100.00), ('部門A', '員工1', '2023-01-02', 150.00), ('部門A', '員工2', '2023-01-01', 200.00), ('部門B', '員工3', '2023-01-01', 50.00), ('部門B', '員工3', '2023-01-02', 75.00), ('部門B', '員工4', '2023-01-01', 300.00); 資料結構: department employee sale_date amount 部門A 員工1 2023/1/1 100 部門A 員工1 2023/1/2 150 部門A 員工2 2023/1/1 200 部門B 員工3 2023/1/1 50 部門B 員工3 2023/1/2 75 部門B 員工4 2023/1/1 300   在分區中計算行號: SELECT department, employee, sale_date, ROW_NUMBER() OVER (PARTITION BY department ORDER BY sale_date) AS row_num FROM sales; 資料結果: department employee sale_date row_num 部門A 員工1 2023/1/1 1 部門A 員工2 2023/1/1 2 部門A 員工1 2023/1/2 3 部門B 員工3 2023/1/1 1 部門B 員工4 202

C#, EF6, 建立資料庫DBEntity物件

public class MyDBEntities : DbContext { public MyDBEntities() : base("name=DBConnectionName") { } public DbSet<Table1> Table1 { get; set; } public DbSet<Table2> Table2 { get; set; } //取得每個DbSet的內容 public IQueryable<TEntity> GetALL<TEntity>() where TEntity : class { return Set<TEntity>().AsQueryable(); } protected override void OnModelCreating(DbModelBuilder modelBuilder) { //讓Entity Framework啟動不再檢查__MigrationHistory表 Database.SetInitializer<MyDBEntities>(null); base.OnModelCreating(modelBuilder); } } 使用範例 Lambda using (GeneralEntities EPEntities = new GeneralEntities()) { var IQuery_Table1 = EPEntities.GetALL<Table1>(); List<Table1> IQuery_Table1 = IQuery_Table1.Where(x => x.AA == "123").ToList(); } LINQ using (GeneralEntities EPEntities = new GeneralEntities()) { var IQuery_Table1 = from t1 in EPEntities.Table1

C#, LINQ : 取得前幾筆資料

using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { List<Person> people = new List<Person> { new Person { Id = 1, Name = "約翰史密斯", Age = 35 }, new Person { Id = 2, Name = "簡道", Age = 28 }, new Person { Id = 3, Name = "約翰強生", Age = 42 }, new Person { Id = 4, Name = "愛麗絲強森", Age = 31 }, new Person { Id = 5, Name = "鮑勃史密斯", Age = 40 }, new Person { Id = 6, Name = "傑克強森", Age = 29 }, }; var query = from person in people where person.Age >= 30 && person.Name.StartsWith("約翰") orderby person.Age descending select new { Id = person.Id, Name = person.Name, Age = person.Age };

C#, LINQ : SQL子查詢

var result = from table in tables where (from subTable in tables select subTable.a).Contains(table.a) select table; 這個LINQ查詢首先從 "tables" 集合中選擇 "a" 值,然後使用 .Contains 方法來檢查主查詢中的 "table.a" 是否存在於子查詢的結果中。這相當於SQL中的 "a IN (SELECT a FROM tables)" 子查詢。

C# LINQ select group

void Main() { List<Order> orders = new List<Order> { new Order { OrderID = 1, OrderDate = DateTime.Parse("2023-09-21") }, new Order { OrderID = 2, OrderDate = DateTime.Parse("2023-09-22") }, // 添加更多订单 }; List<OrderDetail> orderDetails = new List<OrderDetail> { new OrderDetail { OrderDetailID = 1, OrderID = 1, ProductID = 101, UnitPrice = 10.0m, Quantity = 2 }, new OrderDetail { OrderDetailID = 2, OrderID = 1, ProductID = 102, UnitPrice = 15.0m, Quantity = 3 }, new OrderDetail { OrderDetailID = 3, OrderID = 2, ProductID = 103, UnitPrice = 20.0m, Quantity = 4 }, // 添加更多订单详情 }; var query = from order in orders join orderDetail in orderDetails on order.OrderID equals orderDetail.OrderID into orderGroup select new { Order = order, OrderDetails = orderGroup.ToList() }; foreach (var result in query) { Console.WriteLine($"Order ID: {result.Order.Order

C#, Entity Framework 6, 繼承DbContext

using System; using System.Data.Entity; public class MyDbContext : DbContext { public MyDbContext() : base("YourConnectionString") { // 在建構子中指定資料庫連線字串,替換 "YourConnectionString" 為你的實際連線字串 // 禁用自動遷移初始化 __MigrationHistory 表格 Database.SetInitializer<MyDbContext>(null); } public DbSet<Student> Students { get; set; } // 這是資料庫中的一個表格 protected override void OnModelCreating(DbModelBuilder modelBuilder) { // 在這裡可以進行資料庫模型的配置,例如設定索引、關聯等等 base.OnModelCreating(modelBuilder); } }

C#, EntityFramework, LINQ TransactionScopeOption.Suppress

在使用 TransactionScope進行Transaction管控時, 在其區塊所有資料的異動和資料讀取, 都會受到Lock影響, 若希望其區塊有一個不同DbContext要讀取資料, 但因Table已被別的DbContext進行資料異動而Lock時, 可以在要讀取資料的程式碼外, 包上下面TransactionScope, 他將會獨立查詢資料 using (TransactionScope tss = new TransactionScope(TransactionScopeOption.Suppress)) { } TransactionScopeOption 是一個列舉(enum)類型,用於指定 TransactionScope 的行為選項。它定義了以下四個選項: Required (預設選項): 這個選項表示當前代碼塊需要參與到已經存在的事務中。如果當前代碼塊在進入事務範圍時已經存在一個事務,則它將參與到該事務中。如果事務不存在,則會創建一個新的事務。 如果當前代碼塊成功完成,則事務將提交;如果當前代碼塊拋出異常,事務將回滾。 RequiresNew : 這個選項表示當前代碼塊需要創建一個新的獨立事務,並參與到該新事務中。無論是否存在其他事務,都將創建一個新的事務並參與其中。 當前代碼塊的操作將在新的事務內執行,並且無論成功與否,都不會影響到其他事務。 Suppress : 這個選項表示當前代碼塊將禁用事務。也就是說,當前代碼塊的操作將不受事務的約束,即使其他事務正在進行,也不會參與到任何事務中。 當前代碼塊的操作將獨立執行,不會影響到其他事務。 NotAllowed : 這個選項表示當前代碼塊不允許參與到事務中。如果當前代碼塊嘗試進入事務範圍,將引發異常。 通常用於明確禁止某些代碼塊參與到事務中的情況。 使用這些不同的選項,你可以根據你的應用程序需求來管理事務,以確保數據的一致性和可靠性。不同的選項允許你定義事務的範圍和行為方式,以適應不同的情況。

C# List Distinct寫法

若List裡為值類型(Value Type Calss), 只需要使用下列語法, 就可以取得唯一清單 List<string> aList = dataList.Distinct().ToList(); 但若List裡面是放一個Class, 而且有多個屬性, 就需要額外加工一下, 才能真正取得唯一清單, 否則執行完上述語法後, 雖然不會錯誤, 但也沒效果。 需要在Class裡新增下列方法 public override bool Equals(object obj) public override int GetHashCode() 程式可以參考如下, public Class ClassA { public string A { get; set; } public string B { get; set; } public override bool Equals(object obj) { // 如果傳入的物件是null,返回false if (obj == null) return false; // 如果傳入的對象不是 ClassA 類型,返回false if (!(obj is ClassA)) return false; // 將傳入的對象轉換為 ClassA 類型 ClassA other = (ClassA)obj; // 根據需要比較 ClassA 的屬性,這裡比較A和B屬性 return A == other.A && B == other.B; } public override int GetHashCode() { // 使用性的HashCode來生成物件的HashCode return (A.GetHashCode()) ^ (B.GetHashCode()); } } 有了以上程式後, 再使用List.Distinct()時, 就有作用了。 20231117 : 透過Group...first也可以達到Distinct效果, 參考 這篇 。

C#, Entity Framework 執行速度優化

C#, Entity Framework, EF, 執行速度優化 .AsNoTracking() --> 資料不追蹤, 查詢結果不能直接執行SaveChanges() 以下是有關.AsNoTracking()的詳細說明: 跟蹤(Tracking):當你使用EF檢索數據時,EF默認會將檢索到的實體對象添加到內部上下文(DbContext)的跟蹤(或追蹤)中。這意味著EF將跟蹤這些對象的更改,並在適當的時候自動更新數據庫。 .AsNoTracking()的作用:當你調用.AsNoTracking()方法時,EF將停止跟蹤查詢返回的實體對象。這意味著即使你對這些對象進行了更改,EF也不會自動更新數據庫。這可以提高性能,特別是在只需要讀取數據而不需要進行更新操作的情況下。 性能優化:當你使用.AsNoTracking()時,EF不會生成額外的SQL語句來檢查實體對象的更改狀態 ,這可以減少數據庫交互的次數,從而提高性能。此外,不需要將實體對象添加到上下文的跟蹤中,也可以減少內存使用。 使用場景:.AsNoTracking()通常在以下情況下很有用: 當你只需要從數據庫中檢索數據,而不打算對其進行更新。 當你執行只讀操作,如報告生成或查詢操作。 當你處理大量數據,並且不需要EF自動追蹤所有這些對象的更改。 查詢結果不能直接執行SaveChanges() 可以透過把Entity.State變更為Modify後, 再SaveChange()。 var query = from data in dbContext.EntityABC.AsNoTracking() select data; 將Entity Framework的自動更改偵測功能關閉 DbContext.Configuration.AutoDetectChangesEnabled = false; 將Entity Framework的自動更改偵測功能關閉。當你對DbContext進行多個操作(如添加、更新、刪除實體)時,Entity Framework通常會自動檢測更改,並將其跟蹤在內部,以便在保存更改時進行適當的處理。將此設置為false會禁用自動更改偵測,這將在某些情況下提高性能,特別是當你處理大量數據時,因為它不再需要跟蹤每個

MSSQL, SSMS 顯示描述欄位或其他欄位

 HKEY\_CURRENT\_USER\\Software\\Microsoft\\Microsoft SQL Server\\100\\Tools\\Shell\\DataProject\\    V18.10 電腦\\HKEY\_CURRENT\_USER\\SOFTWARE\\Microsoft\\SQL Server Management Studio\\18.0\_IsoShell\\DataProject    SSVPropViewColumnsSQL70 字串 1,2,6,17,7,8; SSVPropViewColumnsSQL80 字串 1,2,6,17,7,8;    1    Column Name 2    Data Type 3    Length 4    Precision 5    Scale 6    Allow Nulls 7    Default Value 8    Identity 9    Identity Seed 10    Identity Increment 11    Row GUID 12    Nullable 13    Condensed Type 14    Not for Replication 15    Formula 16    Collation 17    Description

C#, LINQ 取得前幾筆資料

在這個範例中,我們使用 LINQ 查詢語法來進行查詢。首先,我們使用 from 子句定義範圍變數 person,然後使用 where 子句過濾符合條件的人,接著使用 orderby 子句按照年齡降序排序,最後使用 select 子句創建一個新的匿名類型,選擇我們感興趣的屬性。最終,我們使用 Take 方法獲取前五個人的結果並將其存儲在 result 變數中,然後通過廻圈列印出來。 using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { List people = new List { new Person { Id = 1, Name = "約翰史密斯", Age = 35 }, new Person { Id = 2, Name = "簡道", Age = 28 }, new Person { Id = 3, Name = "約翰強生", Age = 42 }, new Person { Id = 4, Name = "愛麗絲強森", Age = 31 }, new Person { Id = 5, Name = "鮑勃史密斯", Age = 40 }, new Person { Id = 6, Name = "傑克強森", Age = 29 }, }; var query = from person in people where person.Age >= 30 && person.Name.StartsWith("約翰") orderby person.Age descending select new { Id = person.Id, Name = person.Name, Age = person.Age };

C#, LINQ SQL子查詢

LINQ查詢首先從 "tables" 集合中選擇 "a" 值,然後使用 .Contains 方法來檢查主查詢中的 "table.a" 是否存在於子查詢的結果中。這相當於SQL中的 "a IN (SELECT a FROM tables)" 子查詢。 var result = from table in tables where (from subTable in tables select subTable.a).Contains(table.a) select table;

LINQ select group

LINQ select group void Main() { List<order> orders = new List<order> { new Order { OrderID = 1, OrderDate = DateTime.Parse("2023-09-21") }, new Order { OrderID = 2, OrderDate = DateTime.Parse("2023-09-22") }, // 添加更多订单 }; List<orderdetail> orderDetails = new List<orderdetail> { new OrderDetail { OrderDetailID = 1, OrderID = 1, ProductID = 101, UnitPrice = 10.0m, Quantity = 2 }, new OrderDetail { OrderDetailID = 2, OrderID = 1, ProductID = 102, UnitPrice = 15.0m, Quantity = 3 }, new OrderDetail { OrderDetailID = 3, OrderID = 2, ProductID = 103, UnitPrice = 20.0m, Quantity = 4 }, // 添加更多订单详情 }; var query = from order in orders join orderDetail in orderDetails on order.OrderID equals orderDetail.OrderID into orderGroup select new { Order = order, OrderDetails = orderGroup.ToList() }; foreach (var result in query) { Console.WriteLine($"Order

C#, EntityFramework, LINQ 跨資料庫進行Transaction控制

利用 dbContext.Database.BeginTransaction() 來控制 範例程式 string ora_con_str = ConfigurationManager.ConnectionStrings["ora_cnn_str"].ToString(); string ms_con_str = ConfigurationManager.ConnectionStrings["ms_cnn_str"].ToString(); SqlConnection msDbConn = new SqlConnection(ms_con_str); OracleConnection oraDbConn = new OracleConnection(ora_con_str); msDbConn.Open(); oraDbConn.Open(); using (DbContext dbContextTT = new DbContext(oraDbConn, false)) using (DbContext dbContextMS = new DbContext(msDbConn, false)) { using (var transactionTT = dbContextTT.Database.BeginTransaction()) using (var transactionMS = dbContextMS.Database.BeginTransaction()) { try { sql = @" insert into TEST_ALEX(A,C) select '111', 33 from dual "; rec = dbContextTT.Database.ExecuteSqlCommand(sql); sql = @" insert into A (A1, A2, A3) select 'A11','22','33'

Oracle 使用SQL查詢TABLE索引設定

使用SQL查詢TABLE索引設定 SELECT index_name, column_name, column_position FROM user_ind_columns WHERE table_name = upper('Table-Name');

MSSQL 查詢Table資料筆數(非即時)

 有時TABLE資料筆數太多, 無法查詢即時筆數, 可以透過下列語法, 查詢SQL Server記錄的筆數, 參考用, 非即時資料 select * from ( SELECT SCHEMA_NAME(A.schema_id) + '.' + A.Name TableName, AVG(B.rows) AS 'RowCount1' FROM sys.objects A INNER JOIN sys.partitions B ON A.object_id = B.object_id WHERE A.type = 'U' GROUP BY A.schema_id, A.Name ) AA where AA.TableName='dbo.'+'<table-name>' order by AA.RowCount1 desc

MSSQL 查詢Table的Index欄位

  SELECT OBJECT_SCHEMA_NAME(T.[object_id],DB_ID()) AS [Schema], T.[name] AS [table_name], I.[name] AS [index_name], AC.[name] AS [column_name], I.[type_desc], I.[is_unique], I.[data_space_id], I.[ignore_dup_key], I.[is_primary_key], I.[is_unique_constraint], I.[fill_factor], I.[is_padded], I.[is_disabled], I.[is_hypothetical], I.[allow_row_locks], I.[allow_page_locks], IC.[is_descending_key], IC.[is_included_column] FROM sys.[tables] AS T INNER JOIN sys.[indexes] I ON T.[object_id] = I.[object_id] INNER JOIN sys.[index_columns] IC ON I.[object_id] = IC.[object_id] INNER JOIN sys.[all_columns] AC ON T.[object_id] = AC.[object_id] AND IC.[column_id] = AC.[column_id] WHERE T.[is_ms_shipped] = 0 AND I.[type_desc] <> 'HEAP' and T.[name]='<Table-Name>' ORDER BY T.[name], I.[index_id], IC.[key_ordinal]

Bootstrap 4 button styles

![DEMO](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLyqvr-l2WyvKvjTszA_zPseWNuE1gHlge-6K4iLrnKxygD5IHB5s6pr3cl4vxohUGW-mY4fIOc81eD9M-3Cd0yBYsySvvUE6fJivVQe8e_M7jqD6jsOmVFTxcarJDP1RDzTDqB9L5ORQnmpBKQu7cwMXLM3hqprR1MLDrqm4-CXKBxNIWlvTWp0ZYsUE/s728/Image%202874.png) ```html Primary Secondary Success Danger Warning Info Light Dark Link ```

MSSQL設定Oracle DBLINK

MSSQL要設定Oracle DBLINK需要做幾個前置作業 安裝Oracle Client (我是32位元和64位元都安裝) 設定tnsnames.ora檔案 安裝ODAC (Oracle data access component) (64位元) [ LINK ] SSMS設定DBLINK 伺服器物件 > 連結的伺服器 提供者 找到OraOLEDB.Oracle > 屬性, 打勾[允許Inprocess] 新增連結的伺服器 連結的伺服器 : DBLink名稱 伺服器類型(其他資料來源) 提供者 : Oracle Provider for OLE DB 資料來源 : tnsnames.ora 裡面的名稱

JQuery 取消每個Input欄位自動完成功能

$(':input').on('focus', function () { $(this).attr('autocomplete', 'off') });

Oracle 查詢Table Lock 及刪除Lock Session

查詢Lock Session SELECT s.sid, s.serial#, s.username, s.machine, s.program, -- l.type, -- l.lmode, -- l.request, o.object_name, o.object_type FROM v$session s JOIN v$locked_object l ON s.sid = l.session_id JOIN dba_objects o ON l.object_id = o.object_id; kill lock session --ALTER SYSTEM KILL SESSION 'sid,serial#'; ALTER SYSTEM KILL SESSION '516,16217';

DBLINK MSSQL 連線 Oracle SQL查詢語法

MSSQL 連線 Oracle SQL查詢語法 方法一 select * from OracleDBLinkName..SchemaName.TableName 方法二 select * from OPENQUERY(OracleDBLinkName,' select * from SchemaName.TableName where ColnameA=''A'' ');

Ajax不能做到的事

Ajax技術,為顧及安全性,是不支援檔案上傳的;不論你怎麼加屬性加header都無法達成檔案上傳 無法Submit到不同網站

ASP.NET C# 新增webservice網頁

圖片
[WebMethod] public string HelloGuy(string PersonName) { return "Hello " + PersonName; } public string HelloGirl(string GirlName) { return "Hi " + GirlName; }