2017/10/27
2017/10/24
.Net Standard 學習心得與想法
.Net Standard 發展的勢頭越來越旺,身為一個跟資訊沾點邊的人當然要好好地來了解一下。
以下是我的一些想法,如果有錯誤的地方歡迎來指正。
網路上已經有了很多.Net Standard 的相關文章,不論是官方的說明、還是網友的分享都寫得非常的精采,但是這些都還是無法解我的疑惑?
這張圖讓我了解了.Net Standard 的架構,但是然後呢?
實際上應該要怎麼使用呢?
舉個例子:
在來另開一個新的.Net Standard專案STD.DLL,當然STD.DLL必須能呼叫使用ABC.DLL
2017/10/19
樹型資料庫結構設計
最近正在研究樹型資料庫結構設計,從網路上找了不少資料甚有啟發
特別記錄下網路上的資料
資料參考網址:
http://blog.rangilin.idv.tw/tree-structure-in-sql/
http://www.itread01.com/articles/1485146321.html
http://www.bijishequ.com/detail/254862
大家如果有好的觀點,或者好的文章連結,歡迎聯絡我!
2017/10/14
[VB.net] 如何避免程式重複執行
一般要避免開發的應用程式在系統上被使用者重複執行時有以下方法:
方法一.
直接在專案設定裡勾選 "建立單一執行個體應用程式"。
採用這個方法無論在執行程式前程式名稱是否不同,都無法重複執行。
方法二.
直接在 form load 事件裡新增檢查系統上是否有重複名稱的程式在執行
Dim _ThisProcess As Process = Process.GetCurrentProcess
Dim _ProcessArr() As Process = Process.GetProcessesByName(_ThisProcess.ProcessName)
If _ProcessArr.Length > 1 Then
'有重複名稱的程式開啟,關閉自己停止執行
Erase _ProcessArr
End
Else
Erase _ProcessArr
End If
這個方法需要特別注意的是,在執行程式前只要程式名稱不同,雖然是相同的程式也是會重複執行。
2017/10/09
[ADO.NET] VB.net 資料庫連線 IV
接續前一篇 [ADO.NET] VB.net 資料庫連線 III
系列文章最後一篇,說明如何使用參數方式來避免隱碼攻擊
If VbConn.State = ConnectionState.Closed Then
VbConn.ConnectionString = VbConnectionString
VbConn.Open()
Dim VbCommand As System.Data.SqlClient.SqlCommand = VbConn.CreateCommand
VbCommand.CommandText="SELECT * FROM Test WHERE test1=@p1"
VbCommand.Parameters.AddWithValue("@p1" , "a123")
Dim ExecuteReturn As Integer = VbCommand.ExecuteNonQuery
VbCommand.Cancel()
VbConn.Close()
End If
接著說明DataAdapter如何使用參數
Dim MyDataTable As New DataTable
Dim GetData As String=""
Using VbConn As SqlClient.SqlConnection = New SqlClient.SqlConnection(VbConnectionString)
Using Adp As New System.Data.SqlClient.SqlDataAdapter("SELECT * FROM Test WHERE test1=@p1", VbConn)
Adp.SelectCommand.Parameters.AddWithValue("@p1" , "A123")
Adp.Fill(MyDataTable)
End Using
End Using
For i = 0 To MyDataTable.Rows.Count - 1 Step 1
GetData = MyDataTable.Rows(i).Item("欄位名稱")
Next
使用參數化查詢並沒有特別困難,但是要特別注意!!
以SELECT * FROM Test WHERE test1=@p1 這個範例來說,無論test1這個欄位是不是文字格式,都只要輸入test1=@p1就好,千萬不要輸入test1='@p1',會造成系統錯誤。
補充:
如果使用的是OdbcParameter 參數的使用會比較不同
範例:
If VbConn.State = ConnectionState.Closed Then
VbConn.ConnectionString = VbConnectionString
VbConn.Open()
Dim VbCommand As System.Data.Odbc.OdbcCommand = VbConn.CreateCommand
VbCommand.CommandText="SELECT * FROM Test WHERE test1=? AND test2=?"
VbCommand.Parameters.Add("test1" ,OdbcType.VarChar).Value="A1234"
VbCommand.Parameters.Add("test2" ,OdbcType.Int).Value="1234"
Dim ExecuteReturn As Integer = VbCommand.ExecuteNonQuery
VbCommand.Cancel()
VbConn.Close()
End If
詳細說明請參考:https://msdn.microsoft.com/zh-tw/library/zxdcah9t(v=vs.110).aspx
標籤:
參數,
連接資料庫,
隱碼,
ADO.net,
Command,
Connection,
DataAdapter,
DataTable Using,
SQL injection,
VB,
VB.net
2017/10/01
[EXCEL] VBA語法紀錄
偶而還是會用到EXCEL VBA進行開發,紀錄一下語法方便查詢
常用命令:
1. Workbook 活頁簿
2. Workbooks 活頁簿集合
3. Workbooks("filename") 檔名為filename的活頁簿
4. ActiveWorkbook 正在作用中的活頁簿
5. Sheets 活頁簿中所有工作表
6. Sheets(n) 活頁簿中第n張工作表
7. Worksheet 工作表
8. Worksheets 所有工作表(包括圖表)
9. Worksheets("sheet") 指表名為sheet工作表
10. ActiveSheet 正在作用中的工作表
11. Columns("c1:c2") c1至c2欄(其中c1,c2為A~Z或AA~XFD等欄名)
12. Rows("r1:r2") r1至r2列(其中r1,r2為1~1048576等列名
13. Range("x1:x2") x1至x2間的儲存格(其中x1,x2為儲存格位址名稱)
14. cells(i,j) 儲存格(第i列、第j行)
15. ActiveCell 目前的儲存格
16. Selection 目前所選取的物件
使用範例:
Workbooks("Book1").Sheets("Sheet1").Range("A1:D5").Font.Bold = True
Worksheets("Sheet1").Cells.ClearContents
Worksheets("Sheet1").Rows(1).Font.Bold = True
Range("1:1,3:3,8:8")
Worksheets("Sheet1").Cells(6, 1).Value = 10
Worksheets("Sheet1").[A1:B5].ClearContents
ActiveCell.Offset(1, 3).Font.Underline = xlDouble
活頁簿常用屬性:
1.ActiveWorkBook.Name 目前活頁簿的名稱
2.ActiveWorkBook.Save 儲存目前的活頁簿
3.ActiveWorkBook.SaveAs Filename := "filename" 另儲新檔
4.WorkBooks.Add 新增活頁簿
5.WorkBooks(i).Close [SaveChange, Filename, RouteWorkbook] 關閉指定的第i個活頁簿
SaveChange := True 改變儲存
SaveChange := False 不會改變儲存
SaveChange省略時,會出現對話方塊
filename := "檔名"
6.WorkBooks.Open "filename" 開啟一個活頁簿
7.Application.Windows 所有活頁簿視窗
8.WorkBooks.Count 活頁簿的數量
9.WorkBooks.Item(Index) 傳回單一活頁簿,由索引值指定
工作表常用屬性:
Worksheets.Add [Before, After, Count, Type] 新增工作表
Before := Worksheets(n) 出現於某工作表之前
After := Worksheets(n) 出現於某工作表之後
Count := n 新增工作表數量
Type := xlWorksheet (工作表) 或 xlChart (圖表)
WorkSheets.Name 工作表名稱
WorkSheets("Sheet1").Activate 設定工作表為目前作用的功作表
訂閱:
文章 (Atom)