發表文章

取得Html下拉式選單物件的內容

document.getElementById("drp開盤價").options[0].text; document.getElementById("drp開盤價").options[1].text; document.getElementById("drp開盤價").options[2].text; document.getElementById("drp開盤價").options[3].text;

利用同一條Connection連線執行多次Command命令

using (myConn = new SqlConnection(m_strConnectionString)) { myConn.Open(); using (SqlCommand myCommand1 = new SqlCommand(strSql, myConn)) { using (SqlDataAdapter myAdp = new SqlDataAdapter(myCommand1)) { ds = new DataSet(); myAdp.Fill(ds, "RichMoney"); this.GridView1.DataSource = ds; this.GridView1.DataBind(); //第一次運用 strSql = " select * from first "; myCommand1.CommandText = strSql; ds = new DataSet(); myAdp.Fill(ds, "RichMoney"); //第二次運用 strSql = " select * from second "; myCommand1.CommandText = strSql; ds1 = new DataSet(); myAdp.Fill(ds1, "RichMoney"); } } }

Visual Studio 2008 程式開發伺服器通訊埠與IE不一致

執行WebDebug的時候,突然頁面顯示著「網頁無法顯示」的頁面,之前一切正常,經過網路上查證,發現為NOD32防毒軟體的關係 依 進入NOD32的進階設定(F5),網址過濾,HTTP,瀏覽器,會看到一個列表你的devenv.exe應該在其中,雙擊前面的勾 (相當於去掉選中狀態),確定退出,停止一切運行的ASP.NET Development Server,在VS中打開並重新編譯運行你的Web程序」

記憶密碼

密碼型態的文字方塊要記憶密碼時,直接使用.Text屬性並無法顯示必須使用下面的方法 txtPwd.Attributes.Add(" value ", Request.Cookies["Member"]["Pwd"].ToString());

SQL 找出最高學歷問題

圖片
情境說明 在實際應用中,我們常面臨需要找出某個人的最高學歷、最後工作經驗等問題(如下圖),這些涉及到一個人對應多筆有先後順序的明細資料,你可能會常看到先撈出所有員工資料,然後在程式端進行迴圈的篩選,但若資料量過大,這種方式可能面臨效能問題,因此更好的解決方法是在資料過篩選完必要的結果後,再將其拋給程式處理。 這篇文章我要記錄一下兩個常用的寫法,假設我們有三張資料表 #TempEmployee(員工資料)、#TempEduType(學位類型)、#TempEduSchool(員工學歷),建立測試資料表可以參考本文最下方的語法。 我們常見的子查詢的寫法,但缺點是一次只能顯示一個欄位,若要同時顯示最高學歷和其學校名稱,則必須寫兩筆子查詢。 Select emp.*, ( Select Top 1 b.[Type] From #TempEduSchool a Inner Join #TempEduType b on b.[Code]=a.[Type] Where emp.EmpNo=a.EmpNo Order by b.[Level] Desc ) as [MaxType], ( Select Top 1 a.[SchoolName] From #TempEduSchool a Inner Join #TempEduType b on b.[Code]=a.[Type] Where emp.EmpNo=a.EmpNo Order by b.[Level] Desc ) as [SchoolName] From #TempEmployee emp 使用 Outer Apply(效果類似 Left Join) or Cross Apply(效果類似 Inner Join) 的方式,詳細可參考 SQL SERVER 2005 中 Apply的用法 。 Select * From #TempEmployee emp Outer Apply ( Select Top 1 b.[Type] as [MaxType], a.[SchoolName] From #TempEduSchool a Inner Join #TempEduType b on b.[Code]=a.[Type] Where em...

使用NetBeans 將 MySQL 加入 套件中

圖片
先前講的要使用MySQL必須載入驅動,並且將執行檔加入Path,但要是要發佈到客戶端,每台要加入Path大概會瘋掉,下面就是一些加入 .jar 檔的步驟 (1)新增一個新的專案

CuteFtp 備份

1.找到sm.dat檔 位置:Documents and Settings\ username \Application Data\GlobalSCAPE\CuteFTP\x.x\sm.dat username:系統使用者名稱 x.x:CuteFtp版本 2.copy起來就是囉… 3.如果要還原,就用內建的匯入,或者,把sm.dat檔放到step 1的目錄即可。

Java 無法連接MySQL

1.到http://dev.mysql.com/downloads/connector/j/5.0.html下載connector。 2.解壓縮後,將mysql-connector-java-5.0.4-bin.jar複製到jre安裝目錄下的\lib\ext 例如:C:\Program Files\Java\jre1.5.0_09\lib\ext 3. set classpath=.;C:\Program Files\Java\jre1.5.0_09\lib\ext\mysql-connector-java-5.0.4-bin.jar 4.程式碼部分 String jdbc = "com.mysql.jdbc.Driver"; // 使用的 driver String url = "jdbc:mysql://localhost/資料庫名稱"; // 連結路徑 String user = "帳號"; String pass = "密碼"; Class.forName(jdbc); Connection con = DriverManager.getConnection(url,user,pass); 有件事要注意:電腦中同時有jdk及jre,set classpath及connector複製的路徑,當時設定jdk中的jre路徑, 仍沒辦法使用,改成jre才可使用。 本文引用 http://blog.yam.com/carl44/article/7640643

JSP 存取 MSSQL2000 資料庫

1.首先到微軟的網站下載 SQL Server 2000 Driver for JDBC Service Pack 3 在上個網頁,可以下載 mssqlserver.tar 及 setup.exe 其中一項。 .tar有二層的壓縮,所以要解壓二次。

SQL 列出所有重複的資料

圖片
情境說明 假設有一個員工的資料表 #Employee,其中有一個欄位 EmpName 記錄著員工的姓名,我們希望能夠查出在這張表內有哪些人的姓名是相同的,如下圖數據,我們期望可以找出 2 筆 Lawrence,有底下幾種常見的寫法。 若只是單純想找出,不重複的 EmpName,直接 Distinct 即可。 Select Distinct EmpName From #Employee 使用 Group By 來找出 EmpName 超過一筆以上的資料,並顯示實際的資料筆數。 Select EmpName, Count(EmpName) as RecordCount From #Employee Group By EmpName Having count(EmpName) > 1 查出單位內所有重複姓名的人完整資料表數據 Select * From #Employee Where EmpName in (Select EmpName From #Employee Group By EmpName Having count(EmpName) > 1 ) -- or Select * From #Employee main Where (Select Count(EmpName) From #Employee sub where main.EmpName = sub.EmpName ) >1 建立本文範例資料表 相關語法如下參考,使用完畢記得刪除不要的測試資料表喔。 -- 建立測試資料表 CREATE TABLE #Employee ( EmpNo varchar(10), EmpName nvarchar(20)) -- 建立測試資料 Insert Into #Employee values('001', N'Lawrence') Insert Into #Employee values('002', N'Olivier') Insert Into #Employee values('003', N'Lawrence') Insert Into #Employee values('004', N'Lawrence...

GridView History.back()後分頁跑回第一頁

資料控制項對於返回上一頁後都有無法紀錄先前的分頁頁數的問題,本來想要放棄改用ASP的方式自己畫表格,但是這樣就浪費的ASP.NET所提供控制項的目的了,找了好久終於在網路上看到人家的解決方式,解決後又有一些小問題,在IE6.0的時候會出現一個DIV來記錄當前分頁,於是再上方出現一個空格,在這裡運用CSS來處理掉即可。

讀取硬碟資訊(調用API)

雖然使用WMI來讀取系統軟硬體各項資訊非常方便,但不知何故,使用WMI讀取Windows2000做業系統的硬碟資訊就是會出錯,因此必須改成調用API的方式來實作。 呼叫方式 HardDiskInfo hdd = AtapiDevice.GetHddInfo(0); // 第一個硬碟 MessageBox.Show("Module Number:" + hdd.ModuleNumber); MessageBox.Show("Serial Number:" + hdd.SerialNumber); MessageBox.Show("Firmware:" + hdd.Firmware); MessageBox.Show("Capacity:" + hdd.Capacity + "M"); 參考網址 如何得到硬盤序列號[C#] 本文範例 : HardInfo.rar

使用泛型處理常式(ashx)存取Session

要寫入Session必須先加入介面IRequiresSessionState,並且必須引用命名空間 using System.Web.SessionState; public class File_WebHandler : IHttpHandler, IRequiresSessionState  //IReadOnlySessionState 只可讀取Session { public void ProcessRequest(HttpContext context) { context.Session["Write"] = "寫入Session"; //若沒有加入介面將會發生錯誤 } }

在IE中嵌入WinformControl時安全性問題

圖片
使用Winform控制項來撰寫並嵌入在網頁中,用法就像之前的ActiveX一樣,但有幾點要注意,如果要使用有安全性的方法,如IO,如果沒有開啟 NET的權限的話,將會跳出警告視窗,此方法最大的缺點在於,使用者一定要安裝封裝檔才可正常使用,且只有IE瀏覽器有作用

JavaScript 跳出新視窗在螢幕正中間的方法

使用showModalDialog開啟新視窗,通常必須指定距離左邊和上面高度來設定初始位置,但若遇到不同解析度的瀏覽器的話,位置通常會跑掉,因此就必須使用JavaScript的window.screen來達成,以下面紅色字體部分來解釋

透過jQuery處理表單驗證

想要對表單進行驗證只需要使用jQuery減少許多語法,使用前必須先加入jQuery

Firefox內使用style.display="block"無作用的問題

IE顯示隱藏區的Javascript語法為document.all.object.style.display="block"但此用法在Firefox並不適用 function exeInsert() { //Firefox使用空白顯示有別於IE的block document.getElementById("divInsert").style.display=""; document.getElementById("divEdit").style.display="none"; document.getElementById("txtInsert").value = ""; document.getElementById("txtSearch").value = ""; //document.all.divInsert.style.display="block"; //document.all.divEdit.style.display="none"; }

取得一次下多筆SQL指令的影響筆數

//使用委派事件來取得多筆指令受影響列 private void button5_Click(object sender, EventArgs e) { using (SqlConnection conn = new SqlConnection(strConnStr)) { conn.Open(); using (SqlCommand cmd = new SqlCommand()) { //StatementCompleted事件只適用於SqlClient cmd.StatementCompleted += new StatementCompletedEventHandler(cmd_StatementCompleted); cmd.CommandType = CommandType.Text; cmd.Connection = conn; cmd.CommandText = "Insert into Test.dbo.預存程序 (No1) Values ('HHH');" + "Update Test.dbo.預存程序 Set No1 = 'NA' Where No1='NA' or No1='HHH'"; cmd.ExecuteNonQuery(); } } } private void cmd_StatementCompleted(object sender, StatementCompletedEventArgs e) { MessageBox.Show("影響資料筆數:" + e.RecordCount.ToString()); }

Firefox使用showModalDialog回傳時觸發事件

此範例因為使用ASP.NET的MastPage的關係,所以導致按鈕的ID與平常不一樣,須特別注意。 主頁面 window.showModalDialog('ContentInfo.aspx?class=edit&sno='+ e ,self,feature); //執行回傳按鈕事件 if(document.all) { //Name document.getElementById("ctl00$ContentPlaceHolder1$btnReload").click(); } else { //Firefox 專用 var evt = document.createEvent("MouseEvents"); evt.initEvent("click", true, true); document.getElementById("ctl00_ContentPlaceHolder1_btnReload").dispatchEvent(evt); } 主頁面呼叫的按鈕事件 <asp:Button ID="btnReload" runat="server" Text="" onclick="btnReload_Click" />

Dynamic Change Web Services IP Address

使用WebService來進行資料庫存取,如果遇到客戶資料庫主機更改位址的情況,在無從新發行的條件下,可在先前再程式內撰寫自動抓取新的資料庫位址 using WebServiceNameSpace; protected void Page_Load(object sender, EventArgs e) { ServiceName Sn = new ServiceName(); Sn.Url = "http://127.0.0.1/WebService/Class.asmx" Sn.Discover(); //更新位址 } 再搭配Web.Config即可在發行後克服客戶主機位址改變的問題

另用CSS 來達成 HTML文字自動截斷

//==HTML文字自動截斷... string divCSS = "width: 400px; text-overflow: ellipsis; overflow: hidden; white-space:nowrap;"; strbody += "<table width='100%' border='0' cellspacing='0' cellpadding='3'>"; while (!rs.Read()) {   strbody += "<tr>";   strbody += " <td width='4%'> </td>";   strbody += " <td width='4%' valign='top'><img src='../Images/icon-05.gif' /></td>";   strbody += " <td width='96%'><div style='" + divCSS + "'>" +rs["id"].ToString() + "</div></td>";   strbody += " <td width='4%'> </td>";   strbody += " </tr>";   rs.MoveNext(); } strbody += "</table>"

讀取硬碟序號、主機板序號、MAC位址(使用 WMI)

透過WMI,我們可以很方便的取得主機的各種資訊,下列舉例三種取得硬體資訊的方法,使用前必須先加入using System.Management;命名空間

SqlTransaction VS TransactionScope

新的事務處理架構不再與數據庫綁在一起,而是從代碼塊的角度,當在通過 new 語句實例化 TransactionScope 時,事務管理器將確定要參與哪個事務。一經確定,此範圍將始終參與該事務。 也就是說只要是代碼塊是可以被事務管理器所管理的,則允許該代碼塊範圍所參與的事務繼續。如果事務範圍中的代碼發生了異常,它所參與的事務將回滾。也只有 當應用程序完成它要在一個事務中執行的所有工作以後,您應當調用TransactionScope的Complete 方法,以通知事務管理器可以接受提交事務。如在代碼塊內未能調用此方法將中止該事務,也就是隱式的進行了Rollback。對 Dispose 方法的調用標誌著該事務範圍的結束。在調用此方法之後發生的異常不會影響該事務。

WebService 利用SOAP標頭來進行帳號密碼驗證

利用WebService來撰寫三層式架構的中間層是一個不錯的方法,但是 由於WebSerivce夠開放(資料庫存取直接暴露在網際網路上),這是微軟給予有心人士天大的恩賜,難免有一些安全性不足的缺點,在此可以利用 SOAP標頭來進行一些基本的安全防護,至少可以避免一些不會必要的攻擊。

ADO.NET 建立連線字串

程式中建立Dbconnection物件時,需提供連線字串、資料庫伺服器、名稱、安全性資訊,以下為連線字串的索引鍵。 Application Name :應用程式名稱,若沒有提供,預設為 .Net SqlClient Data Provider。 AttachDBFilename :也可寫為 extended properties 或 Initaial File Name,資料庫檔案的名稱,需包含完整路徑,可搭配 |DataDirectory| 來設定相對路徑。且資料庫不能是唯讀,不支援HTTP格式。