专利名称:用于服务器访问sql数据库的中介软件工具的制作方法
技术领域:
本发明涉及一种中介软件,它用于执行受许可证数限制的SQL引擎的服务器中,特别涉及经执行本发明中介软件的服务器,它能够增加可使用SQL引擎的客户数。
为使熟悉该项技术人士了解本发明的目的、特征及功效,现通过下述具体实施例,并配合附图,对本发明详加说明,说明如后为实现本发明上述目的,本发明提供一种用于服务器访问SQL数据库的中介软件工具,其中服务器至少具有一个SQL数据库,及一个访问SQL数据库及受使用许可证数限制的SQL引擎,通过服务器执行该中介软件工具后,能够增加可使用原来受许可证数限制的SQL引擎的客户数,中介软件工具包括一个通道模块,用以在一网络上建立服务器与多个客户端电脑间的多条SQL指令通道,并且通过所建立的SQL指令通道用以接收/传送SQL指令及SQL指令的处理结果;一个SQL指令发送/接收模块,用以将SQL指令通道的SQL指令发送给SQL引擎处理,及接收SQL引擎处理后的结果并传送至通道模块。
图2显示
图1的服务器的主存储器的状态图。服务器10的主存储器至少储存一个服务器版本的视窗操作系统10c、一个受使用许可证数限制的SQL引擎10b、及中介软件工具100的通道模块101及SQL指令发送/接收模块103。其中服务器版本的视窗操作系统10c可为微软公司(MicrosoftCorporation)的Windows NT服务器版的操作系统或是Windows 2000服务器版的操作系统,SQL引擎10b可为微软公司(Microsoft Corporation)的SQL服务软件。
图3A显示本发明的通道模块的处理流程图。步骤101a是在网络30上建立服务器10与多个客户端电脑20间的多条SQL指令通道1010(见图4)。步骤101b是接收SQL指令通道1010所包含的SQL指令40。步骤101c是传送SQL指令40至SQL指令发送/接收模块103。步骤101b是接收由SQL指令发送/接收模块103所传送SQL指令的处理结果50。步骤101e是通过SQL指令通道1010传送SQL指令的处理结果50至客户端电脑20。
图3B显示本发明的SQL指令发送/接收模块的处理流程图。步骤103a是接收由通道模块101所传送的SQL指令40。步骤103b是将SQL指令40发送给SQL引擎10b处理。步骤103c是接收SQL引擎10b对SQL指令40作处理的结果50。步骤103d是传送SQL指令的处理结果50至通道模块101。
图4显示在一受使用许可证数限制的SQL引擎上的服务器实施本发明获得增加使用客户数的示意图。图4的SQL引擎10b是为一个最大许可数为四个客户的SQL引擎,亦即其最多仅能处理由四个客户端电脑20所要求的SQL指令40。在图4的范例中,通道模块101所能建立出的SQL指令通道1010的最大通道条数是为SQL引擎10b的最大使用人数与数字256的乘积,亦即4×256=1024(最大通道条数),因此通道模块101可以同时与1000个客户端电脑20连线,使其皆能够访问SQL数据库10a。在图4的范例中,SQL指令发送/接收模块103接收由通道模块101所传送的SQL指令40,其中所接收到的SQL指令40是为1000个客户端电脑20所发出的SQL指令40,再将SQL指令40发送给SQL引擎10b处理,SQL指令处理结果50再通过通道模块101的SQL指令通道1010传回至客户端电脑20。
图5显示服务器10执行中介软件工具100在显示器上(图未显示)所显示的画面60。图6显示客户端电脑20向服务器10的通道模块101下达要求建立SQL指令通道1010,在客户端电脑20显示器(图未显示)上所显示的画面70。
图7A显示客户端电脑向服务器下达要求处理SQL指令,在客户端电脑显示器上所显示的画面。在客户端电脑20的显示器(图未显示)上所显示的画面80,其画面80的区域80a输入“select*from employees”的SQL指令40,其经服务器10处理后的SQL指令处理结果50在画面80的区域80b显示。图7B显示在图7A情况下,在服务器显示器上所显示的画面。服务器10的显示器(图未显示)上所显示的画面90,其画面90的区域90a显示“select*from employees”的SQL指令40的处理情况。
本发明的中介软件工具进一步包括档案传送指令模块105,请参见图8所显示在一服务器上实施档案传送指令模块的示意图,由客户端电脑20所传送过来的档案传送指令200可以通过通道模块101所建立出的SQL指令通道1010来传送,通道模块101再将SQL指令通道1010所包含的档案传送指令200传送至档案传送指令模块105,接着,档案传送指令模块105依据档案传送指令200进行处理,以进行将客户端电脑20的档案传送并储存至服务器10的储存装置106内。图9A显示客户端电脑传送一档案至服务器,在客户端电脑显示器上所显示的画面。在客户端电脑20显示器上(图未显示)所显示的画面110,其画面110的区110a输入所传送档案路径(file path),然后在区域110b下达传送指令。图9B显示在图9A情况下,在服务器10显示器(图未显示)上所显示的画面120,在其画面120的区域120a显示档案传送指令的处理情况。
本实施例的程序的源代码如下<pre listing-type="program-listing">Private Sub MDIForm_Load() ws.LocalPort=1024 ws.SListen txtIP=ws.LocalIp txtPort=ws.LocalPort lstStatus.AddItem ws.State sConn.CursorLocation=adUseClient sConn.Open″provider=sqloledb;server=test;uid=sa;Pwd=;idatabase=vendor″End SubPrivate Sub mnuExit_Click() EndEnd SubPrivate Sub Ws_SConnectionRequest(ByVal requestID As Long) Dim s1 As New Session lstStatus.AddItem″Request″&amp; ws.RemoteIp &amp;″″&amp; ws.RemotePort s1.Show s1.ws.SAccept requestID lstStatus.AddItem″Accept″&amp; s1.ws.RemoteIp &amp;″″&amp; s1.ws.RemotePortEnd SubOption Explicit Private FileName As String,sGetStr As String<dp n="d5"/> Private Sub Form_Unload(Cancel As Integer) ws.SCloseEnd SubPrivate Sub Ws_SClose() Unload MeEnd SubPrivate Sub Ws_SDataArrival(ByVal bytes Total As Long) Dim Str1 As String,sTemp As String,i As Integer On Error GoTo errorhandle Str1=ws.SGetData sGetStr=Mid(Str1,7) Set sRes=Nothing Select Case UCase(Left(Str1,6)) Case″INSSER″ sRes.Open(sGetStr),sConn ws.SSendData″SENPIC″ Case″GETPIC″,″ITMPIC″ ws.SSendFile(Mid(Str1,7)) Case″SELECT″ sRes.Open(sGetStr),sConn sTemp=″″ Do While Not sRes.EOF For i=0 To 9 sTemp=sTemp &amp; sRes(i).Value &amp; Chr(240)<dp n="d6"/> Next sRes.MoveNext Loop ws.SSendData″RESULT″&amp; sTemp Case″DELITM″ sRes.Open(sGetStr),sConn ws.SSendData″DELITM″ End Select List1.Addltem Str1 Exit Suberrorhandle MsgBox Err.DescriptionEnd SubPrivate Sub Ws_SFileArrival(ByVal FileName As String) FileName=Mid(FileName,4) FileCopy″c\″&amp; FileName,″c\serverpic\″&amp; FileName Kill″c\″&amp; FileNameEnd SubPublic sConn As New ADODB.ConnectionPublic sRes As New ADODB.RecordsetCption Explicit Private FileName As String,SS1 As String,l As ListItem,sTemp As StringPrivate Sub Command1_Click() CD1.ShowOpen<dp n="d7"/> FileName=CD1.FileName If Trim(FileName)=″″Then Exit Sub If LCase(Right(Trim(FileName), 3)) <> ″jpg″ AndLCase(Right(Trim(FileName),3))<>″gif″And LCase(Right(Trim(FileName),3))<>″bmp″Then MsgBox″The image file′s format can not be displayed.″ Exit Sub End If Set Picture1.Picture=LoadPicture(FileName) Picture1.Move(Frame6.Width-Picture1.Width)/2,Frame6.Top+(Frame6.Height-Picture1.Height)/2End SubPrivate Sub Command2_Click() Dim FSO As New FIleSystemObject If Trim(Text1(0).Text)=″″Then MsgBox″The Item No.is empty″ Exit Sub End If If Trim(Text1(1).Text)=″″Then MsgBox″The Item Description is empty″ Exit Sub End If If Not IsNumeric(Text1(3).Text)Then MsgBox″The On Hand quantity is numeric″ Exit Sub End If If Not IsNumeric(Text1(4).Text)Then MsgBox″The On PO quantity is numeric″<dp n="d8"/> Exit Sub End If If Not IsNumeric(Text1(5).Text)Then MsgBox″The On Sales quantity is numeric″ Exit Sub End If If Not IsNumeric(Text1(6).Text)Then MsgBox″The On Service quantity is numeric″ Exit Sub End If sTemp =″INSERT INTO inventory WITH(ROWLOCK)(itemno,description,manufactureno,″ Temp=sTemp &amp;″onhand,onpo,onsales,onservice,pic,detailed)values(′″ Temp = sTemp&amp; UCase(Trim(Text1(0)Text)) &amp; ″′;′″ &amp;UCase(Trim(Text1(1).Text))&amp;″′,′″&amp; UCase(Trim(Text1(2).Text)) &amp;″′,″&amp; Text1(3).Text &amp;″,″ Temp=sTemp &amp; Text1(4).Text &amp;″,″&amp; Text1(5).Text &amp;″,″&amp; Text1(6).Text&amp; ″,′″ If Trim(FileName)=″″Then sTemp=sTemp &amp;″c\serverpic\″ Else sTemp=sTemp &amp;″c\serverpic\″&amp; Trim(FSO.GetFile(FileName).Name) End If sTemp=sTemp &amp;″′,′″&amp; Text1(14).Text &amp;″′)″ If ws.State=7 Then ws.SSendData″INSSER″&amp; sTemp Else MsgBox″No connect to the server.″<dp n="d9"/> End IfEnd SubPrivate Sub Command3_Click() If ws.State=7 Then sTemp=″SELECT*FROM inventory ORDER BY ITEMNO″ ws.SSendData″SELECT″&amp; sTemp Else MsgBox″No connect to the server.″ Exit Sub End IfEnd SubPrivate Sub Command4_Click() If txtIP.Text=″″And txtPort.Text=″″Then MsgBox″IP or Port cannot empty.″ ElseIf ws.State=7 Then MsgBox″Connected Server Already.″ ElseIf ws.State=0 Then ws.SConnect txtIP,txtPort Text1(0).SetFocus Else MsgBox″Please check the server.″ EndIfEnd SubPrivate Sub Command5_Click() If MsgBox(″Are you sure to delete the record[Y/N]?″,vbYesNo)=vbNo ThenExit Sub<dp n="d10"/> sTemp=″delete inventory where reference=″&amp; ListView1.SelectedItem ws.SSendData″DELITM″&amp; sTempEnd SubPrivate Sub Command6_Click() Dim sjs As Integer For sjs=0 To 2 Text1(sjs).Text=″″ Next For sjs=3 To 6 Text1(sjs).Text=″0″ Next Text1(14).Text=″″ Set Picture1.Picture=LoadPictureEnd SubPrivate Sub Command7_Click() Frame4.Visible=False ListView1.SetFocusEnd SubPrivate Sub Command9_Click() CD1.ShowOpen FileName=CD1.FileName If Trim(FileName)=″″Then Exit Sub If LCase(Right(Trim(FileName), 3)) <> ″jPg″ AndLCase(Right(Trim(FileName),3))<>″gif″And LCase(Right(Trim(FileName),3))<>″bmp″Then MsgBox″The image file′s format can not be displayed.″<dp n="d11"/> Exit Sub End If Set Picture2.Picture=LoadPicture(FileName)End SubPrivate Sub Forn_Load() SSTabl.Tab=0 Call Command6_ClickEnd SubPrivate Sub ListView1_DblClick() Dim sjs As Integer If ListView1.ListItems.Count<=0 Then Exit Sub Frame4.Visible=True For sjs=1 To 7 Text1(sjs+6).Text=ListView1.SelectedItem.SubItems(sjs) Next Text1(15).Text=ListView1.SelectedItem.SubItems(9) Set Picture2.Picture=LoadPicture If UCase(Trim(ListView1.SelectedItem.SubItems(8))) =″C\SERVERPIC\″Then FileName=″″ Exit Sub Else FileName=Trim(ListView1.SelectedItem.SubItems(8)) If ws.State=7 Then ws.SSendData″ITMPIC″&amp; ListView1.SelectedItem.SubItems(8) Else MsgBox″No connect to the server.″<dp n="d12"/> End If End IfEnd SubPrivate Sub ListView1_KeyDown(KeyCode As Integer,Shift As Integer) If KeyCode=13 Then Call ListView1_DblClickEnd SubPrivate Sub ws_SClose() Unload MeEnd SubPrivate Sub Ws_SDataArriva1(ByVal bytesTotal As Long) Dim SS As String SS=ws.SGetData If Len(Trim(SS))>7 Then SS1=Mid(SS,8) End If If Trim(SS)=″ReceiveFileDone″Then MsgBox″Success fully save to server.″ Call Command3_Click Call Command6_Click End If Select Case Left(SS,6) Case″SENPIC″ If Trim(FileName)<>″″Then ws.SSendFile FileName ElseIf Trim(FileName)=″″Then ws.SSendFile″c\socket k\socketk2\back.gif″<dp n="d13"/> End If Case″RESULT″ If Len(SS)=7 Then MsgBox″There is no data.″ Exit Sub End If ListView1.ListItems.Clear Do While Len(SS1)>1 Set l=ListView1.ListItems.Add(,,GetSubString()) l.SubItems(1)=UCase(GetSubString()) l.SubItems(2)=UCase(GetSubString()) l.SubItems(3)=UCase(GetSubString()) l.SubItems(4)=GetSubString() l.SubItems(5)=GetSubString() l.SubItems(6)=GetSubString() l.SubItems(7)=GetSubString() l.SubItems(8)=LCase(GetSubString()) l.SubItems(9)=Trim(GetSubString()) Loop ListView1.SetFocus Case″DELITM″ MsgBox″Delete successfully.″ ListViewl.ListItems.Remove ListView1.SelectedItem.Index Frame4.Visible=False End SelectEnd SubPrivate Function GetSubString()AS String Dim i As Integer<dp n="d14"/> For i=1 To Len(SS1) If Mid(SS1,i,1)=Chr(240)Then GetSubString=Left(SS1,i-1) SS1=Right(SS1,Len(SS1)-i) Exit For End If NextEnd FunctionPrivate Sub Ws_SFileArrival{ByVal FileName As String) Set Picture2.Picture=LoadPicture Set Picture2.Picture=LoadPicture(FileName) Picture2.Move(Frame5.Width-Picture2.Width)/2,(Frame5.Top+(Frame5.Height-Picture2.Height)/2) Kill FileName Command7.SetFocusEnd Sub</pre>虽然本发明以一较佳实施例揭露如上,但并非用来限定本发明,任何熟悉此技术者,在不脱离本发明的创意和范围内,可作各种更动与润饰,所作的各种的更动与润饰皆是属于本发明权利要求范围所界定者。
权利要求
1.一种用于服务器访问SQL数据库的中介软件工具,其特征在于所述的服务器至少具有一个SQL数据库,及一个访问该SQL数据库及受使用许可证数限制的SQL引擎,通过该服务器执行该中介软件工具后,能够将原受使用许可证数限制的SQL引擎增加使用人数,该中介软件工具包括一个通道模块,用以在一网络上建立该服务器与多个客户端电脑间的多条SQL指令通道,并且通过所建立的SQL指令通道用以接收/传送SQL指令及该SQL指令的处理结果;一个SQL指令发送/接收模块,用以将该SQL指令通道的SQL指令发送给该SQL引擎处理,及接收该SQL引擎处理后的结果并传送至该通道模块。
2.如权利要求1所述的中介软件工具,其特征在于所述的受使用许可证数限制的SQL引擎是为微软公司(Microsoft Corporation)的SQL服务软件。
3.如权利要求1所述的中介软件工具,其特征在于所述的网络为一网际网络(INTERNET)。
4.如权利要求1所述的中介软件工具,其特征在于所述的网络为一企业内网络(Intranet)。
5.如权利要求1所述的中介软件工具,其特征在于,进一步包括一个档案传送指令模块,用以将该客户端电脑的档案传送并储存至该服务器。
全文摘要
本发明是提供一种用于受许可证数限制的SQL引擎的中介软件,其执行于一服务器内,能够让SQL引擎增加使用人数。中介软件工具包括一个通道模块,用以在一网络上建立服务器与多个客户端电脑间的多条SQL指令通道,并且通过所建立的SQL指令通道用以接收/传送SQL指令及该SQL指令的处理结果;一个SQL指令发送/接收模块,用以将SQL指令通道的SQL指令发送给SQL引擎处理,及接收SQL引擎处理后的结果并传送至通道模块。
文档编号G06F9/45GK1477496SQ0214204
公开日2004年2月25日 申请日期2002年8月23日 优先权日2002年8月23日
发明者梁国恩 申请人:梁国恩