热线的转工作单及案例库系统,后台用Oracle数据库,界面采用VB6.0开发。
我想问大家 应该怎样控制数据库连接,才能很好的解决并发访问的问题。大概需要满足200用户。
我想在每个人提交转工作单时进行连接,提交成功之后再断开连接释放资源,应该怎样实现呢?
我没有多用户并发访问控制的经验,希望有经验的朋友可以谈谈!非常感谢!!
还有,如果采用ODBC方式连接,那么程序打包时 DSN要怎么办?

解决方案 »

  1.   

    这不是ORACLE的问题,而是数据访问提供者的问题。
    如果你用ADO,则应该参考一下其帮助。
    再说了,你的问题不明确,你想怎么控制连接用户?
    别用ODBC
      

  2.   

    请参阅下面这个帖子,可以解决楼主的问题
    http://community.csdn.net/Expert/topic/3877/3877381.xml?temp=.1703302
      

  3.   

    对:chncoder(Aaron) 
    我想如果每个用户都在登陆客户端程序的时候连接数据库,然后直到退出程序再断开连接,这样是不是连接数据库的用户太多了,会有问题?  而如果控制在每个用户提交工作单时进行连接,提交成功之后断开,这样是不是好一点。可是代码会很繁琐。如果编写中间层dll 应该是怎样的思路?
      

  4.   

    '========================================
    '建立与Oracle数据库的连接
    '========================================
    Public Function Conn_Oracle(strConn As String) As Boolean
           On Error GoTo err1
           Dim i As Long
           
           If Not Conn Is Nothing Then Set Conn = Nothing
           
           Set Conn = New ADODB.Connection
    '*************************************************************
    '       Operator = "张飞翔(40666)"
    '       UserName = "FLYINGZFX"
    '       PassWord = "12345678"
    '       ServerName = "ORACLE1_LSC"
    '       'ServerName = "FLYING"
    '
    '       strConn = ""
    '       strConn = strConn & "Provider=OraOLEDB.Oracle;"
    '       strConn = strConn & "Data Source=" & ServerName & ";"
    '       strConn = strConn & "User ID=" & UserName & ";"
    '       strConn = strConn & "PassWord=" & PassWord & ";"
    '*************************************************************
          ' Debug.Print strConn
           Conn.ConnectionString = strConn
           Conn.CommandTimeout = 60
           Conn.CursorLocation = adUseClient
           Conn.Open
    'Provider=OraOLEDB.Oracle;Data Source=FLYING;User ID=FLYINGZFX;PassWord=12345678
           
           '建立表空间
           'Conn.Execute "CREATE TABLESPACE ""FLYINGZFX"" DATAFILE 'D:\flyingzfx.dbf' SIZE 5m autoextend on", , adCmdText
           '删除表空间(其中一步)
           'Conn.Execute "alter database 'D:\flyingzfx.dbf' offline drop", , adCmdText
           '---"DROP DATABASE INCLUDING CONTENTS AND DATAFILES "
           '添加字段
           'Conn.Execute "ALTER TABLE FLYINGZFX.TEMPTEST ADD(CC VARCHAR2(50))"
           '修改字段类型
           'Conn.Execute "ALTER TABLE FLYINGZFX.TEMPTEST MODIFY(A VARCHAR2(50))"
           '删除字段
           'Conn.Execute "ALTER TABLE FLYINGZFX.TEMPTEST DROP (A, B) CASCADE CONSTRAINTS"
           '删除主键
           'Conn.Execute "ALTER TABLE FLYINGZFX.TEMPTEST DROP CONSTRAINT BB CASCADE"
           '删除表
           'Conn.Execute "DROP TABLE xxxx TRUNCATE CASCADE"
           ServerName = Get_OracleServerName
           Debug.Print "Connection Success!!!" & " (Conn_Oracle)"
           Conn_Oracle = True
           Exit Function
           
    err1:
           Conn_Oracle = False
           
           
           Debug.Print Err.Description
           Err.Clear
           
           If Not Conn Is Nothing Then
                  If Conn.State <> 0 Then Conn.Close
                  Set Conn = Nothing
           End If
           
    End Function