Uygulama config dosyasındaki connection string'e aşağıdaki kod girilerek hata giderildi. Fakat bu geçici bir çözüm. Deadlock hatası almamak için aynı anda sadece bir bağlantının açık olması daha mantıklı olacaktır. Ya da veritabanı erişiminde kullanılacak kodun bu işleme uygun olarak oluşturulması gerekmektedir (SQL kodlarda NOLOCK kullanılması gibi).
MultipleActiveResultSets=true;
Monday, July 31, 2017
Datagridview'de titreme ve donma sorunu hk. (Datagridview Flickering)
Datagridview'de özellikle çok sayıda kolon içeren bir sorgu sonucu gösterilmek istendiğinde verilerde titreme (flickering) ile karşılaşıyorduk. Geçenlerde stackoverflow'da dolaşırken aşağıdaki koda denk geldim. Titremeyi tamamen ortadan kaldırıyor.
Public Shared Function DoubleBuffered(ByVal dgv As DataGridView)
Dim dgvType As Type = dgv.[GetType]()
Dim pi As PropertyInfo = dgvType.GetProperty("DoubleBuffered", BindingFlags.Instance Or BindingFlags.NonPublic)
pi.SetValue(dgv, True, Nothing)
Return Nothing
End Function
Datagridview Flickering Cambly, English, Yabancı Dil
Public Shared Function DoubleBuffered(ByVal dgv As DataGridView)
Dim dgvType As Type = dgv.[GetType]()
Dim pi As PropertyInfo = dgvType.GetProperty("DoubleBuffered", BindingFlags.Instance Or BindingFlags.NonPublic)
pi.SetValue(dgv, True, Nothing)
Return Nothing
End Function
Datagridview Flickering Cambly, English, Yabancı Dil
Sunday, December 11, 2016
Belirli bir günden önceki dosyaları silme metodu.
Belirli bir günden önceki dosyaları silme metodu.
Aşağıdaki metod ile "folderPath" klasöründe beforeDayCount parametresinde belirtilen gün sayısından daha önce oluşturulmuş dosyalar silinir.
Public Shared Sub DeleteFiles(folderPath As String, Optional beforeDayCount As Integer = 30)
If (folderPath.Trim() <> "" And beforeDayCount <> 0) AndAlso System.IO.Directory.Exists(folderPath) Then
Dim folderInfo As New System.IO.DirectoryInfo(folderPath)
Dim fileList As System.IO.FileInfo() = folderInfo.GetFiles()
For Each fi As System.IO.FileInfo In fileList
If fi.LastWriteTime <= DateAdd(DateInterval.Day, IIf(beforeDayCount < 0, beforeDayCount, -1 * beforeDayCount), Date.Now) Then
Try
System.IO.File.Delete(fi.FullName)
Catch ex As Exception
End Try
End If
Next
End If
End Sub
Aşağıdaki metod ile "folderPath" klasöründe beforeDayCount parametresinde belirtilen gün sayısından daha önce oluşturulmuş dosyalar silinir.
Public Shared Sub DeleteFiles(folderPath As String, Optional beforeDayCount As Integer = 30)
If (folderPath.Trim() <> "" And beforeDayCount <> 0) AndAlso System.IO.Directory.Exists(folderPath) Then
Dim folderInfo As New System.IO.DirectoryInfo(folderPath)
Dim fileList As System.IO.FileInfo() = folderInfo.GetFiles()
For Each fi As System.IO.FileInfo In fileList
If fi.LastWriteTime <= DateAdd(DateInterval.Day, IIf(beforeDayCount < 0, beforeDayCount, -1 * beforeDayCount), Date.Now) Then
Try
System.IO.File.Delete(fi.FullName)
Catch ex As Exception
End Try
End If
Next
End If
End Sub
Friday, September 9, 2016
ASP.NET Web Service ile NT Domain Hesabı Kullanarak SQL Server'a Bağlanmak (Impersonation Yöntemi ile)
Kurumsal projelerde kullanılan sql generic user, şifre gereksinimi ve şifrenin belirli aralıklarla değiştirilmek istenmesi nedeniyle sorunlara neden olmaktadır. Bu nedenle sql user yerine bir domain üzerinde tanımlı nt user kullanarak şifre ihtiyacını ortadan kaldırmak mümkün.
1) Öncelikle web service’in kurulacağı app server üzerinde svctest adında bir domain user’ı oluşturulup ardından aynı user için SQL Server’daki ilgili database’ e db_owner hakkı verilmelidir.
2) IIS üzerine web service eklenmeden önce Application Pool oluşturulması gerekmektedir. Aşağıdaki şekilde oluşturulmalıdır.
TLS1.2 desteği isteniyorsa .NET CLR sürümü v4.5 ve üzeri olmalıdır.
1) Öncelikle web service’in kurulacağı app server üzerinde svctest adında bir domain user’ı oluşturulup ardından aynı user için SQL Server’daki ilgili database’ e db_owner hakkı verilmelidir.
2) IIS üzerine web service eklenmeden önce Application Pool oluşturulması gerekmektedir. Aşağıdaki şekilde oluşturulmalıdır.
TLS1.2 desteği isteniyorsa .NET CLR sürümü v4.5 ve üzeri olmalıdır.
Monday, August 22, 2016
JQuery.FileDownload plugin'i ile dosya download edilmesi
JQuery.FileDownload (https://github.com/johnculviner/jquery.fileDownload) plugin'ini düzgün çalıştırabilmek için Set-Cookie ve Cache-Control header larının code behind kısmında eklenmesi gerekiyor.
Download.aspx.vb
Response.Clear()
Dim timestamp As String =
Request.QueryString("timestamp")
timestamp = CodeHelper.CheckClientContent(timestamp)
Dim fileName As String = "File_" &
timestamp & ".xlsx"
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Response.AddHeader("Content-Disposition", "attachment;filename=" &
fileName)
Response.AddHeader("Set-Cookie",
"fileDownload=true; path=/")
Response.AddHeader("Cache-Control",
"no-cache, no-store, must-revalidate")
EPPlus ile oluşturulmuş excel dosyanın download edilmesi
pck EPPlus package nesnesidir. Aşağıdaki kod try-catch bloğu içerisinde olmalıdır ve ThreadAbortException hatası kesinlikle handle edilmelidir.
Response.Clear()
Dim timestamp As String = Request.QueryString("timestamp")
timestamp = CodeHelper.CheckClientContent(timestamp)
Dim fileName As String = "File_" & timestamp & ".xlsx"
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
Response.AddHeader("Content-Disposition", "attachment;filename=" & fileName)
Using myMemoryStream As New MemoryStream
pck.SaveAs(myMemoryStream)
myMemoryStream.WriteTo(Response.OutputStream)
Response.Flush()
Response.End()
End Using
Tuesday, August 2, 2016
Linq ile Datatable'daki bir kolona ait distinct verileri list olarak alma
Dim sku_id_list = (From row In dtReturn.AsEnumerable()
Select row.Field(Of Integer)("sku_id")).Distinct().ToList()
Select row.Field(Of Integer)("sku_id")).Distinct().ToList()
Friday, July 22, 2016
SQL Server'da text split etme
Unutmamak için buraya ekledim. İnceledikten sonra konuyla ilgili buraya bir şeyler karalayacağım.
SELECT Source = q.value('(/n[1])', 'varchar(10)'),
RecordType = q.value('(/n[2])', 'varchar(20)'),
RecordNumber = q.value('(/n[3])', 'int'),
Status = q.value('(/n[4])', 'varchar(5)')
FROM (
SELECT q = Convert(xml,'<n>'+Replace(fieldName,'.','</n><n>')+'</n>')
FROM some_TABLE
) Q
'How do I split a string so I can access item x?
SQLBulkCopy ile identity kolonu olan bir tabloya veri aktarma
SQLBulkCopy ile identity kolonu olan bir tabloya veri aktarmak için aktarılacak datatable'da identity kolonunun da tanımlı olması ve veritabanı tablosuyla datatable'ın birebir aynı kolon isimlerine sahip olması gerekiyor.
SQLBulkCopy ile aktarmadan önce datatable'daki identity kolonunun satır içerikleri DBNull.Value olarak set edilmelidir.
Örnek:
dsID değerinin veritabanı tarafında identity olarak tanımlı olduğunu varsayalım.
Dim dtVender As New DataTable()
dtVender.Columns.Add(New DataColumn())
dtVender.Columns.Add(New DataColumn())
dtVender.Columns.Add(New DataColumn())
Dim vRow As DataRow = dtVender.NewRow()
vRow.Item(0) = DBNull.Value
vRow.Item(1) = vender_no
vRow.Item(2) = sku_id
dtVender.Rows.Add(vRow)
SQLBulkCopy ile aktarmadan önce datatable'daki identity kolonunun satır içerikleri DBNull.Value olarak set edilmelidir.
Örnek:
dsID değerinin veritabanı tarafında identity olarak tanımlı olduğunu varsayalım.
Dim dtVender As New DataTable()
dtVender.Columns.Add(New DataColumn())
dtVender.Columns.Add(New DataColumn())
dtVender.Columns.Add(New DataColumn())
Dim vRow As DataRow = dtVender.NewRow()
vRow.Item(0) = DBNull.Value
vRow.Item(1) = vender_no
vRow.Item(2) = sku_id
dtVender.Rows.Add(vRow)
Wednesday, July 20, 2016
"Microsoft Excel cannot access the file" hatası
Microsoft Excel cannot access the file 'FilePath'. There are several possible reasons:
• The file name or path does not exist.
• The file is being used by another program.
• The workbook you are trying to save has the same name as a currently open workbook.
Bu hatanın çözümünün hata açıklamasıyla hiçbir alakası yok. Aşağıdaki klasörler oluşturulduğunda sorun çözülüyor. Genellikle 64bit sistemlerde, 32 bit uyumlu Excel Interop kullanılıyorsa bu sorunla karşılaşılıyor.
x64: Aşağıda belirtilen klasör yolunu oluşturun.
C:\Windows\SysWOW64\config\systemprofile\Desktop
x86: Aşağıda belirtilen klasör yolunu oluşturun.
C:\Windows\System32\config\systemprofile\Desktop
• The file name or path does not exist.
• The file is being used by another program.
• The workbook you are trying to save has the same name as a currently open workbook.
Bu hatanın çözümünün hata açıklamasıyla hiçbir alakası yok. Aşağıdaki klasörler oluşturulduğunda sorun çözülüyor. Genellikle 64bit sistemlerde, 32 bit uyumlu Excel Interop kullanılıyorsa bu sorunla karşılaşılıyor.
x64: Aşağıda belirtilen klasör yolunu oluşturun.
C:\Windows\SysWOW64\config\systemprofile\Desktop
x86: Aşağıda belirtilen klasör yolunu oluşturun.
C:\Windows\System32\config\systemprofile\Desktop
"There is already an open DataReader associated with this Command which must be closed first." hatası
Bu hatanın bir diğer çözümü:
Connection string değerine MultipleActiveResultSets=true; ibaresini eklemek.
Örnek:
Data Source=SUNUCU;Initial Catalog=MyDB;User ID=KULLANICIADI;Password=SIFRE;Connection Timeout=10;MultipleActiveResultSets=true;
Connection string değerine MultipleActiveResultSets=true; ibaresini eklemek.
Örnek:
Data Source=SUNUCU;Initial Catalog=MyDB;User ID=KULLANICIADI;Password=SIFRE;Connection Timeout=10;MultipleActiveResultSets=true;
Datatable üzerinde sayfalama işlemi
'Sayfada görüntülenecek kayıt sayısı
Dim pageSize As Integer = 1000
Dim skipNumber As Integer = 0
If pageNo < 1 Then
skipNumber = 0
Else
skipNumber = (pageNo - 1) * PageSize
End If
MyDatatable'ın dolu olduğunu düşünürsek ekran üzerinden aktarılacak pageNo üzerinden pageSize adet kadar kaydın DataGridView kontrolü üzerinde görüntülenmesi sağlanır.
Dim pageDT as Datatable=Nothing
Try
If MyDatatable.Rows.Count > 0 Then
pageDT = QueryDatatable.AsEnumerable().Skip(skipNumber).Take(PageSize).CopyToDataTable()
Else
pageDT = New DataTable
End If
Catch ex As Exception
pageDT = New DataTable
End Try
DataGridView.DataSource=pageDT
'How to paging datatable
Dim pageSize As Integer = 1000
Dim skipNumber As Integer = 0
If pageNo < 1 Then
skipNumber = 0
Else
skipNumber = (pageNo - 1) * PageSize
End If
MyDatatable'ın dolu olduğunu düşünürsek ekran üzerinden aktarılacak pageNo üzerinden pageSize adet kadar kaydın DataGridView kontrolü üzerinde görüntülenmesi sağlanır.
Dim pageDT as Datatable=Nothing
Try
If MyDatatable.Rows.Count > 0 Then
pageDT = QueryDatatable.AsEnumerable().Skip(skipNumber).Take(PageSize).CopyToDataTable()
Else
pageDT = New DataTable
End If
Catch ex As Exception
pageDT = New DataTable
End Try
DataGridView.DataSource=pageDT
'How to paging datatable
SQL Bulk Copy ile datatable daki veriyi veritabanındaki bir tabloya aktarma
Dim dtVender As New DataTable()
dtVender.Columns.Add(New DataColumn())
dtVender.Columns.Add(New DataColumn())
dtVender.Columns.Add(New DataColumn())
Dim vRow As DataRow = dtVender.NewRow()
vRow.Item(0) = dsID
vRow.Item(1) = vender_no
vRow.Item(2) = sku_id
dtVender.Rows.Add(vRow)
Datatable'ı doldurduktan sonra aşağıdaki metodu kullanarak datatable içerisindeki verileri "tbl_Vender" tablosuna aktarabilirsiniz.
SQLBulkCopyToTable(dtVender, "tbl_Vender")
Private Sub SQLBulkCopyToTable(ByRef sourceDT As DataTable, destinationTableName As String)
Try
Using cn As New SqlConnection(ConfigurationManager.AppSettings("ConnectionString").ToString())
cn.Open()
If sourceDT.Rows.Count > 0 Then
Using copy As New SqlBulkCopy(cn)
copy.DestinationTableName = destinationTableName
copy.BulkCopyTimeout = 5000
copy.BatchSize = 5000
copy.WriteToServer(sourceDT)
End Using
End If
End Using
Catch ex As Exception
End Try
End Sub
dtVender.Columns.Add(New DataColumn())
dtVender.Columns.Add(New DataColumn())
dtVender.Columns.Add(New DataColumn())
Dim vRow As DataRow = dtVender.NewRow()
vRow.Item(0) = dsID
vRow.Item(1) = vender_no
vRow.Item(2) = sku_id
dtVender.Rows.Add(vRow)
Datatable'ı doldurduktan sonra aşağıdaki metodu kullanarak datatable içerisindeki verileri "tbl_Vender" tablosuna aktarabilirsiniz.
SQLBulkCopyToTable(dtVender, "tbl_Vender")
Private Sub SQLBulkCopyToTable(ByRef sourceDT As DataTable, destinationTableName As String)
Try
Using cn As New SqlConnection(ConfigurationManager.AppSettings("ConnectionString").ToString())
cn.Open()
If sourceDT.Rows.Count > 0 Then
Using copy As New SqlBulkCopy(cn)
copy.DestinationTableName = destinationTableName
copy.BulkCopyTimeout = 5000
copy.BatchSize = 5000
copy.WriteToServer(sourceDT)
End Using
End If
End Using
Catch ex As Exception
End Try
End Sub
Wednesday, December 23, 2015
Şifre değerini SecureString'e Dönüştürme
Şifre değerini SecureString'e Dönüştürme
Public Shared Function ConvertToSecureString(strPassword As String) As SecureString
Dim secureStr = New SecureString()
If strPassword.Length > 0 Then
For Each c In strPassword.ToCharArray()
secureStr.AppendChar(c)
Next
End If
Return secureStr
End Function
Public Shared Function ConvertToSecureString(strPassword As String) As SecureString
Dim secureStr = New SecureString()
If strPassword.Length > 0 Then
For Each c In strPassword.ToCharArray()
secureStr.AppendChar(c)
Next
End If
Return secureStr
End Function
Wednesday, December 16, 2015
SQL Server'da bir tabloya ait kolon bilgilerinin alınması. 3 farklı seçenek.
SQL Server'da bir tabloya ait kolon bilgilerinin alınması. 3 farklı seçenek.
Seçenek 1:
Seçenek 1:
SELECT ISNULL(COL.COLUMN_NAME,'') as Name
,ISNULL(COL.DATA_TYPE, '') as Type
,ISNULL(COL.NUMERIC_SCALE,0) as
Numeric_Scale
,ISNULL(COL.NUMERIC_PRECISION, 0) as Precision
,ISNULL(COL.CHARACTER_MAXIMUM_LENGTH,
0) as
LenStr
,CASE WHEN ISNULL(KEYCOLUSE.COLUMN_NAME,'0') = '0' THEN 0 ELSE 1 END as
isPrimaryKey
FROM INFORMATION_SCHEMA.COLUMNS as COL
LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE as
KEYCOLUSE
ON KEYCOLUSE.TABLE_NAME = COL.TABLE_NAME
AND KEYCOLUSE.COLUMN_NAME = COL.COLUMN_NAME
WHERE COL.TABLE_NAME = 'TableName'
AND
COL.TABLE_SCHEMA =
'dbo'
ORDER BY COL.ORDINAL_POSITION
Seçenek 2:
SELECT C.name AS Name,
T.name AS Type,
ISNULL(C.scale, 0) AS Numeric_Scale,
ISNULL(C.precision, 0) AS Precision,
(CASE WHEN
T.name LIKE '%char%' THEN ISNULL(C.max_length, 0) ELSE 0 END) AS LenStr,
(CASE WHEN
ISNULL(P.column_id,0)>0 THEN 1 ELSE 0 END) As isPrimaryKey
FROM sys.columns AS C
LEFT JOIN (
SELECT ic.object_id, ic.column_id
FROM sys.indexes AS i INNER JOIN
sys.index_columns AS ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
WHERE i.is_primary_key
= 1
) AS P ON C.object_id = P.object_id AND C.column_id = P.column_id
INNER JOIN sys.types T on T.system_type_id = C.system_type_id
WHERE OBJECT_NAME(C.object_id) = 'TableName'
ORDER BY C.column_id
Seçenek 3:
SELECT C.id,C.name AS Name,
T.name AS Type,
ISNULL(C.scale, 0) AS Numeric_Scale,
ISNULL(C.prec, 0) AS Precision,
(CASE WHEN
LOWER(T.name) LIKE '%char%' THEN ISNULL(C.length, 0) ELSE 0 END) AS LenStr,
(CASE WHEN
ISNULL(P.colid,0)>0 THEN 1 ELSE 0 END) As isPrimaryKey
FROM syscolumns AS C
LEFT JOIN (
SELECT ic.id, ic.colid
FROM sysindexkeys
AS ic
) AS P ON C.id = P.id AND C.colid = P.colid
INNER JOIN systypes T on T.xtype = C.xtype AND T.status=0
WHERE OBJECT_NAME(C.id) = 'TableName'
ORDER BY C.colorder
* How to find out column names of a table in SQL Server
* How to find out column names of a table in SQL Server
Tuesday, December 2, 2014
"Cannot resolve collation conflict for DISTINCT operation." hatası
Database sunucusu ile veritabanınız farklı collationlara sahip ve "Cannot resolve collation conflict for DISTINCT operation." hatası alıyorsunuz. Öyleyse yapmanız gereken aşağıdaki gibi kodunuza COLLATE "CollationAdi" eklemek.
SELECT DISTINCT (ISNULL(D.DemirbasCinsi,'') + '-' + ISNULL(V.ParaKodu,'')) COLLATE SQL_Latin1_General_CP1_CI_AS AS KolonAdi
FROM v_Demirbas AS D
INNER JOIN tbl_VUK AS V ON D.dmb_barkod COLLATE SQL_Latin1_General_CP1_CI_AS =V.dmb_barkod COLLATE SQL_Latin1_General_CP1_CI_AS
SELECT DISTINCT (ISNULL(D.DemirbasCinsi,'') + '-' + ISNULL(V.ParaKodu,'')) COLLATE SQL_Latin1_General_CP1_CI_AS AS KolonAdi
FROM v_Demirbas AS D
INNER JOIN tbl_VUK AS V ON D.dmb_barkod COLLATE SQL_Latin1_General_CP1_CI_AS =V.dmb_barkod COLLATE SQL_Latin1_General_CP1_CI_AS
Wednesday, March 12, 2014
.Net ile SFTP dosya transfer işlemleri(SFTP file transfers in .NET)
.Net üzerinden SFTP (secure ftp) dosya transfer işlemi gerçekleştirecekseniz, SSHnet en iyi çözüm.
Buradan indireceğiniz Renci.SshNet dll dosyasını uygulamanıza referans olarak ekledikten sonra aşağıdaki örnek kodla dosya indirme işlemini gerçekleştirebilirsiniz. Ayrıntılı bilgiyi sshnet'in kendi sitesinde bulabilirsiniz.
Dim remoteDirectory As String = "/"
Dim localDirectory As String = "C:\Test\"
Dim connInfo As Object = New Renci.SshNet. PasswordConnectionInfo("hostadresi", "username", "password")
Using client As New Renci.SshNet.SftpClient( connInfo)
client.Connect()
fileName = remoteDirectory & "indirilecekdosya.txt"
If client.Exists(fileName) Then client.DownloadFile(fileName, New System.IO.FileStream( localDirectory & fileName, FileMode.Create, FileAccess.Write), Nothing)
End If
client.Disconnect()
End Using
Friday, September 13, 2013
Veri Ambarı ve Veri Madenciliği Nedir?
Başlangıç ve fikir edinmek için:
http://tr.wikipedia.org/wiki/Veri_ambar%C4%B1
http://www.cagatayyurtoz.com/drupal-7.0/content/k%C4%B1saca-veri-ambar%C4%B1-olap-etl-data-mart-nedir
http://www.datawarehouse.gen.tr/Makale.aspx?ID=374&seo=veri-ambari-ve-veri-madenciligi-nedir
http://web.sakarya.edu.tr/~cagil/e-isletme/VeriAmbarlari.ppt
http://tr.wikipedia.org/wiki/Veri_ambar%C4%B1
http://www.cagatayyurtoz.com/drupal-7.0/content/k%C4%B1saca-veri-ambar%C4%B1-olap-etl-data-mart-nedir
http://www.datawarehouse.gen.tr/Makale.aspx?ID=374&seo=veri-ambari-ve-veri-madenciligi-nedir
http://web.sakarya.edu.tr/~cagil/e-isletme/VeriAmbarlari.ppt
VB.NET Kullanıcıya ait klasörlerin yolunu bulmak.
Kullanıcıya ait klasörlerin yolunu bulmak.
1) My.Computer.FileSystem.SpecialDirectories ile
http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.fileio.specialdirectories.aspx
Ulaşılabilecek klasör isimleri:
- AllUsersApplicationData
- CurrentUserApplicationData
- Desktop
- MyDocuments
- MyMusic
- MyPictures
- ProgramFiles
- Programs
- Temp
1) My.Computer.FileSystem.SpecialDirectories ile
http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.fileio.specialdirectories.aspx
Ulaşılabilecek klasör isimleri:
- AllUsersApplicationData
- CurrentUserApplicationData
- Desktop
- MyDocuments
- MyMusic
- MyPictures
- ProgramFiles
- Programs
- Temp
Thursday, September 12, 2013
MD5 - SHA1- SHA256 - SHA512 ile string bir değeri şifrelemek.
MD5 - SHA1- SHA256 - SHA512 ile string bir değeri şifrelemek.
Combobox - cbAlgorithms
txtValue - TextBox
txtResult - TextBox(Multiline=true)
Combobox - cbAlgorithms
txtValue - TextBox
txtResult - TextBox(Multiline=true)
btnEncrypt - Button
Imports System.Text
Imports System.Security.Cryptography
Public Class frmMain
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
cbAlgorithms.Items.Add("Seçiniz...")
cbAlgorithms.Items.Add("MD5")
cbAlgorithms.Items.Add("SHA1")
cbAlgorithms.Items.Add("SHA256")
cbAlgorithms.Items.Add("SHA512")
cbAlgorithms.SelectedIndex = 0
End Sub
Public Function EncryptMD5(ByVal ClearString As String) As String
Dim uniEncode As New UnicodeEncoding()
Dim bytClearString() As Byte = uniEncode.GetBytes(ClearString)
Dim md5 As New MD5Cng
Dim hash() As Byte = md5.ComputeHash(bytClearString)
Subscribe to:
Posts (Atom)
