SQL文を統合するクラス


ASPデータベースプログラムを書くときは、SQL文を使うのが普通ですが、データを増やしたり更新したりするときは、insert into message(incept,sender,title,content,sendtime,flag,issend)values('"&incept(i)&"","&membername&","""""""""""""&title&","""""""&message&",Now(),0,1)フィールドが多いとき、更新したテーブルが多いときは、修正が面倒で、修正が面倒で、修正が面倒で、修正が面倒で、修正が面倒で、修正が面倒で、面倒で、修正が面倒で、修正が面倒で、面倒で、修正が面倒でまた、検索エラーも比較的難しい.このSQLクラスを使用すると、簡単に修正できますし、エラーも簡単に確認できます.クラスのAddField関数でフィールド名とフィールド値を追加すると、フィールド名とフィールド値をSQL文に簡単に挿入し、SQL文に戻ることができます.
このクラスのコードを見てみましょう.
   
   
   
   
  1.  
  2. class SQLString  
  3.  
  4.        '************************************  
  5.  
  6.        '  
  7.  
  8.        '************************************  
  9.  
  10.        'sTableName ----   
  11.  
  12.        'iSQLType ----SQL :0- ,1- ,2- ,3-  
  13.  
  14.        'sWhere ----   
  15.  
  16.        'sOrder ----   
  17.  
  18.        'sSQL ----  
  19.  
  20.        Private sTableName,iSQLType,sWhere,sOrder,sSQL  
  21.  
  22.          
  23.  
  24.        '************************************  
  25.  
  26.        ' /  
  27.  
  28.        '************************************  
  29.  
  30.          
  31.  
  32.        Private Sub Class_Initialize()  
  33.  
  34.               sTableName="" 
  35.  
  36.               iSQLType=0  
  37.  
  38.               sWhere="" 
  39.  
  40.               sOrder="" 
  41.  
  42.               sSQL="" 
  43.  
  44.        End Sub  
  45.  
  46.    
  47.  
  48.        Private Sub Class_Terminate()  
  49.  
  50.        End Sub  
  51.  
  52.    
  53.  
  54.        '************************************  
  55.  
  56.        '  
  57.  
  58.        '************************************  
  59.  
  60.        ‘  
  61.  
  62.        Public Property Let TableName(value)           
  63.  
  64.               sTableName=value  
  65.  
  66.        End Property  
  67.  
  68.    
  69.  
  70.     ‘  
  71.  
  72.        Public Property Let Where(value)  
  73.  
  74.               sWhere=value  
  75.  
  76.        End Property  
  77.  
  78.    
  79.  
  80.     ‘  
  81.  
  82.        Public Property Let Order(value)  
  83.  
  84.               sOrder=value  
  85.  
  86.        End Property  
  87.  
  88.          
  89.  
  90.     ‘  
  91.  
  92.        Public property Let SQLType(value)  
  93.  
  94.               iSQLType=value  
  95.  
  96.               select case iSQLType  
  97.  
  98.               case 0  
  99.  
  100.                      sSQL="insert into #0 (#1) values (#2)" 
  101.  
  102.               case 1  
  103.  
  104.                      sSQL="update #0 set #1=#2" 
  105.  
  106.               case 2  
  107.  
  108.                      sSQL="delete from #0 " 
  109.  
  110.               case 3  
  111.  
  112.                      sSQL="select #1 from #0 "                    
  113.  
  114.               end select 
  115.  
  116.        End Property  
  117.  
  118.          
  119.  
  120.        '************************************  
  121.  
  122.        '  
  123.  
  124.        '************************************  
  125.  
  126.    
  127.  
  128.     ' ( , )  
  129.  
  130.        Public Sub AddField(sFieldName,sValue)  
  131.  
  132.               select case iSQLType  
  133.  
  134.               case 0  
  135.  
  136.                      sSQL=replace(sSQL,"#1",sFieldName & ",#1")  
  137.  
  138.                      sSQL=replace(sSQL,"#2","'" & sFieldName & "',#2")  
  139.  
  140.               case 1  
  141.  
  142.                      sSQL=replace(sSQL,"#1",sFieldName)  
  143.  
  144.                      sSQL=replace(sSQL,"#2","'" & sFieldName & "',#1=#2")  
  145.  
  146.               case 3  
  147.  
  148.                      sSQL=replace(sSQL,"#1",sFieldName & ",#1")  
  149.  
  150.               End Select 
  151.  
  152.        End Sub  
  153.  
  154.          
  155.  
  156.        ' SQL  
  157.  
  158.        Public Function ReturnSQL()  
  159.  
  160.               sSQL=replace(sSQL,"#0",sTableName)  
  161.  
  162.               select case iSQLType  
  163.  
  164.               case 0  
  165.  
  166.                      sSQL=replace(sSQL,",#1","")  
  167.  
  168.                      sSQL=replace(sSQL,",#2","")  
  169.  
  170.               case 1  
  171.  
  172.                      sSQL=replace(sSQL,",#1=#2","")  
  173.  
  174.               case 3  
  175.  
  176.                      sSQL=replace(sSQL,",#1","")  
  177.  
  178.               end Select 
  179.  
  180.               if sWhere<>"" then 
  181.  
  182.                      sSQL=sSQL & " where " & sWhere  
  183.  
  184.               end if  
  185.  
  186.               if sOrder<>"" then 
  187.  
  188.                      sSQL=sSQL & " order by "  & sOrder  
  189.  
  190.               end if  
  191.  
  192.               ReturnSQL=sSQL  
  193.  
  194.        End Function 
  195.  
  196.          
  197.  
  198.        '  
  199.  
  200.        Public Sub Clear()  
  201.  
  202.               sTableName="" 
  203.  
  204.               iSQLType=0  
  205.  
  206.               sWhere="" 
  207.  
  208.               sOrder="" 
  209.  
  210.               sSQL="" 
  211.  
  212.        End Sub  
  213.  
  214. end class  
  215.  
  216. %> 

使用方法:
例文:insert into message(incept,sender,title,content,sendtime,flag,issend)values('"&incept(i)&",'"&membername&",'"&title&",'""&message&",Now(),0,1)
set a =new SQLString
クラスオブジェクトの作成
a.TableName="message "
'テーブル名をmessageとして設定
a.SQLType=0
「クエリー・タイプを増加レコードに設定する」
a.AddField "incept", incept(i)
a.AddField "sender ", membername
a.AddField "title ", membername
a.AddField "sender ", title
a.AddField "content ", message
a.AddField "sendtime ", sendtime()
a.AddField "flag", 0
a.AddField "issend ", 1
Response.Write a.ReturnSQl
set a=nothing