惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Vulnerabilities – Threatpost
Know Your Adversary
Know Your Adversary
C
Cyber Attacks, Cyber Crime and Cyber Security
S
Secure Thoughts
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
宝玉的分享
宝玉的分享
Spread Privacy
Spread Privacy
AWS News Blog
AWS News Blog
D
Docker
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
TaoSecurity Blog
TaoSecurity Blog
博客园 - 三生石上(FineUI控件)
Apple Machine Learning Research
Apple Machine Learning Research
Cyberwarzone
Cyberwarzone
V
V2EX
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
WordPress大学
WordPress大学
P
Palo Alto Networks Blog
H
Heimdal Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 叶小钗
N
News and Events Feed by Topic
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
Project Zero
Project Zero
Martin Fowler
Martin Fowler
大猫的无限游戏
大猫的无限游戏
D
DataBreaches.Net
Engineering at Meta
Engineering at Meta
S
Schneier on Security
Google DeepMind News
Google DeepMind News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Hugging Face - Blog
Hugging Face - Blog
P
Proofpoint News Feed
S
SegmentFault 最新的问题
Hacker News: Ask HN
Hacker News: Ask HN
小众软件
小众软件
博客园 - 聂微东
S
Security Affairs
T
Tor Project blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Threat Research - Cisco Blogs
T
Threatpost
博客园 - 【当耐特】
L
LINUX DO - 热门话题
G
Google Developers Blog
P
Privacy & Cybersecurity Law Blog
A
About on SuperTechFans
F
Fortinet All Blogs

博客园 - squirrel_sc

强人工智能:抑制神经元的意义 强人工智能基本问题:全局控制与自组织 程序员,为未来准备好了吗? 强人工智能基本问题:自上而下,还是自下而上。 强人工智能基本问题:神经网络分层还是不分层 什么阻碍了强人工智能的发展 人类和强人工智能的关系(人类会被灭掉吗?) 为什么需要强人工智能 神经网络和机器学习、强人工智能 重新开张! 招全职asp.net中高级程序员 遍历所有session并取值 使用批处理出现奇怪的现象 asp.net设置默认按钮的一种方法(041217更新) httpcompress实际效果能有多少? 大Sql的切分执行 vb.net和C#开发环境和开发效率的比较 被.net郁闷的一天 IE5下通过、不会被列表框遮挡的日期控件
轻量级的数据库访问类 041104版
squirrel_sc · 2004-11-04 · via 博客园 - squirrel_sc

这次更新主要加入一个执行大sql的函数。因为发现同时执行两个大sql(2000行以上)的时候,经常性的超时,所以加入了一个切分大sql的函数。另外,对所有使用connection对象的地方进行了dispose。


Public Class DataDriver

    
Private Shared _connString As String

    
Private Shared Function GetConnString()Function GetConnString() As String
        
If (_connString Is NothingThen
            _connString 
= System.Configuration.ConfigurationSettings.AppSettings("ConnectionString")
        
End If
        
Return _connString
    
End Function


    
'过滤单引号',防止sql注入攻击
    Public Shared Function DealSqlStr()Function DealSqlStr(ByVal strInput As StringAs String
        
Dim strTemp As String
        strTemp 
= strInput
        
If (strTemp <> Nothing AndAlso strTemp.Length > 0Then
            strTemp 
= strTemp.Replace("'""''")
        
Else
            strTemp 
= ""
        End If
        
Return strTemp
    
End Function


    
'分页获取数据
    Public Shared Function GetPage(ByVal col As StringByRef table As StringByRef dt As System.Data.DataTable, Optional ByVal page As Integer = 1Optional ByVal condition As String = ""Optional ByVal order As String = ""Optional ByVal pageSize As Integer = 20As Integer
        
Dim sql As String = "Select " + col + " from " + table
        
If (condition <> ""Then
            sql 
+= " where " + condition
        
End If
        
If (order <> ""Then
            sql 
+= " order by " + order
        
End If
        
Return GetPage(sql, dt, page, pageSize)
    
End Function


    
'分页获取数据
    Public Shared Function GetPage(ByVal sql As StringByRef dt As System.Data.DataTable, ByVal page As IntegerByVal pageSize As IntegerAs Integer
        
Dim objConn As New SqlConnection(UtilTools.GetConnString())
        
Dim objCmd As New SqlCommand("xp_GetPage", objConn)
        
Dim ds As New DataSet
        
Dim recordCount As Integer
        objCmd.CommandType 
= CommandType.StoredProcedure
        objCmd.Parameters.Add(
"@sql", sql)
        objCmd.Parameters.Add(
"@page", page)
        objCmd.Parameters.Add(
"@pageSize", pageSize)
        objCmd.Parameters.Add(
"@needCount"1)
        
Dim objDA As New SqlDataAdapter("", objConn)
        objDA.SelectCommand 
= objCmd
        objDA.Fill(ds)
        dt 
= ds.Tables(1)
        recordCount 
= ds.Tables(2).Rows(0).Item(0)
        objCmd.Dispose()
        objConn.Dispose()
        
Return recordCount
    
End Function


    
'获取单行数据
    Public Shared Sub GetOneRow(ByVal col As StringByVal table As StringByRef dr As System.Data.DataRow, Optional ByVal condition As String = "")
        
Dim sql As String = "Select top 1 " + col + " from " + table
        
If (condition <> ""Then
            sql 
+= " where " + condition
        
End If
        GetOneRow(sql, dr)
    
End Sub


    
'获取单行数据,如统计值等
    Public Shared Sub GetOneRow(ByVal sql As StringByRef dr As System.Data.DataRow)
        
Dim dt As New DataTable
        GetRows(sql, dt)
        
If (dt.Rows.Count > 0Then
            dr 
= dt.Rows(0)
        
Else
            dr 
= Nothing
        
End If
    
End Sub


    
'获取多行数据
    Public Shared Sub GetRows(ByVal sql As StringByRef dt As System.Data.DataTable)
        
Dim objConn As New SqlConnection(UtilTools.GetConnString())
        
Dim objDA As New SqlDataAdapter(sql, objConn)
        objDA.Fill(dt)
        objConn.Dispose()
        objDA.Dispose()
    
End Sub


    
'执行sql语句
    Public Shared Sub ExecuteSql(ByVal sql As String)
        
Dim objConn As New SqlConnection(UtilTools.GetConnString())
        
Dim objCmd As New SqlCommand(sql, objConn)
        
Try
            objConn.Open()
            objCmd.ExecuteNonQuery()
        
Catch ex As System.data.sqlclient.SqlException
            
Throw ex
        
Finally
            objConn.Close()
            objConn.Dispose()
            objCmd.Dispose()
        
End Try
    
End Sub


    
'执行大sql语句,传入为StringBuilder以提高效率。
    Public Shared Sub ExecuteBigSql(ByRef sbSql As System.Text.StringBuilder, Optional ByVal startWord As String = "insert into"Optional ByVal groupNumber As Integer = 500)
        
Dim str As String
        
Dim bGoOn As Boolean = True
        
Dim iStart As Integer = 0
        
Dim iNext As Integer = 0
        
str = sbSql.ToString()
        
While (bGoOn)
            iStart 
= iNext
            
For i As Integer = 0 To groupNumber
                iNext 
= str.IndexOf(startWord, iNext)
                
If (iNext < 0Then
                    bGoOn 
= False
                    
Exit For
                
Else
                    iNext 
+= startWord.Length
                
End If
            
Next
            
If (iNext >= 0Then
                iNext 
-= startWord.Length
            
End If

            
If (iNext > 0Then
                ExecuteSql(
str.Substring(iStart, iNext - iStart))
            
Else
                ExecuteSql(
str.Substring(iStart))
            
End If
        
End While
    
End Sub

End Class


该部分代码为完全代码,以前版本请参考:
http://www.cnblogs.com/squirrel_sc/archive/2004/09/27/47049.html

---------------------------

http://www.cnblogs.com/squirrel_sc

1. 如有引用,请包含本段文字及原始出处。以表示对作者的尊重,且能将有相似想法的人联系起来。

2. 如无特殊说明,本文的文字代表作者的观点和想法。由于人类的记忆和连通性的限制,可能会将别人的观点和想法当成自己的(会尽量避免,但我读书少,别蒙我:D);或有人会有同样的想法(那就太好了)。若有此类情况,请联系我。我会很高兴更新内容。

3. 每篇文章会根据反馈或新的想法,随时更新。我会尽量记得更新版本号。