标签: ado

在 Classic ASP 中,打开和关闭多个连接是否会对性能产生重大影响?

我有一个类似于下面的代码片段,我想将其重构为两个不同的函数,每个函数都有自己的连接(为了更好的维护):

Dim Conn, Sql, RS

Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open ConnString

Sql = SELECT * FROM CLIENTS

Set RS = Conn.Execute(sql)
//'Do something with Clients

Set RS = Nothing

Sql = SELECT * FROM DEALERS

Set RS = Conn.Execute(sql)
//'Do something with Dealers

Set RS = Nothing

Conn.Close
Set Conn = Nothing
Run Code Online (Sandbox Code Playgroud)

是否有两个函数(例如 GetClients 和 GetDealers)分别打开和关闭它们自己的连接会对性能产生重大影响,与仅打开和关闭单个连接相反,如上图所示?如果是这样,您将如何重构代码?

sql ado sqlconnection asp-classic

2
推荐指数
1
解决办法
3347
查看次数

如何防止 TADORecordset 滚动?

我想根据某些条件阻止 ADORecordset 的滚动。

例如,做这样的事情会很方便:

procedure TfrmMain.qryCenyBeforeScroll(DataSet: TDataSet);
begin
  if not (condition) then
    qryCeny.DoNotScroll;  //Just the idea
end;
Run Code Online (Sandbox Code Playgroud)

这该怎么做?

delphi ado recordset

2
推荐指数
1
解决办法
616
查看次数

通过 ADO/VBA 指示 SQL Server 存储过程更新成功/失败的返回值

我有一个更新表中值的 SQL Server 2008 存储过程。我想让存储过程返回一个整数值,指示更新成功(返回 0)或不成功(返回错误号)。通过 ADO 和 VBA 实现这一目标的最佳方法是什么?这是我的一些执行更新的简化形式的代码......我只是不确定如何取回存储过程的返回值

Public Function DoUpdate(employeeID as integer, firstName as string, lastname as string) as integer

  Dim cnn As ADODB.Connection
  Dim cmd As ADODB.Command
  Dim activeConnectionString As String

  activeConnectionString = GetActiveConnectionString()

  Set cnn = New ADODB.Connection
  cnn.ConnectionString = activeConnectionString
  cnn.CursorLocation = adUseClient
  cnn.Open

  Set cmd = New ADODB.Command
  cmd.ActiveConnection = cnn
  cmd.CommandType = adCmdStoredProc
  cmd.CommandText = "uspUpdateEmployeeName"
  cmd.NamedParameters = True

  cmd.Parameters("@EmployeeID").Value = employeeID 
  cmd.Parameters("@FirstName").Value = firstName
  cmd.Parameters("@LastName").Value = lastName

  cmd.Execute

  'Unsure of how …
Run Code Online (Sandbox Code Playgroud)

vba stored-procedures ado return-value

2
推荐指数
1
解决办法
2万
查看次数

将记录从直通查询附加到本地表

我有一个Access数据库,我正在使用传递查询来返回AS400表中的记录.连接字符串和传递查询工作正常,但现在我正在尝试将pt查询的结果填充到db中的本地表中,并且我的代码超时.这是我第一次尝试ADO,所以我放弃了我的代码"我不是100%肯定我在做什么!".你能看看这个,看看有什么明显的东西我做错了吗?任何方向将不胜感激.先感谢您.

    Sub mod_ADODBConnect()
      Const NewTableName = "MyNewTable"
      Dim cn As ADODB.Connection
      Dim rs As ADODB.Recordset
      Dim db As DAO.Database
      Dim sSQL1 As String
      Dim sSQL2 As String

      sSQL1 = "SELECT ITMNUM, ITMDS, ITPKDS, MJCMCD, SBCMCD, STATUS, PRITIN, OGEXDT         from PDBLLIB007.BLPMST07"
      sSQL2 = "INSERT INTO ' & NewTableName & ' SELECT [" & sSQL1 & "].* from [" & sSQL1 & "]"

      Set cn = New ADODB.Connection
      cn.Open "Driver={Client Access ODBC Driver (32-bit)};" & _
        "System=DC007; Uid=XXXXX; Pwd=XXXXXX; MgDSN=0; ConnType=2;" & …
Run Code Online (Sandbox Code Playgroud)

ms-access ado access-vba

2
推荐指数
1
解决办法
1万
查看次数

使用ADODB.Stream保存POST二进制数据

另一个网站使用POST方法向我发送数据.

我想获取这些数据并将其插入数据库.

经过网上的一些研究,我得出结论,ADODB.Stream应该为我做的工作.

我没有获取二进制数据的问题Request.TotalBytes.使用以下代码,我没有收到错误,但它也没有保存数据.所以我必须对ADODB Stream做错事.

    tot_bytes = Request.TotalBytes

    Set BinaryStream = CreateObject("ADODB.Stream")
    BinaryStream.Mode = 3
    BinaryStream.Type = 1
    BinaryStream.Open       
    gBinaryData = BinaryStream.Write(tot_bytes) 
    BinaryStream.Close
    Set BinaryStream = Nothing

    SQL = "INSERT INTO STATUSES (StatusMessage, StatusDateEntered) VALUES ('"& gBinaryData &"', '"& FormatDateMySQL(NOW) &"')"                                  
    Set objAddC = objConn.execute(SQL)
Run Code Online (Sandbox Code Playgroud)

.

Following a successful subscription, Facebook will proceed to call your endpoint every time that there are changes (to the chosen fields or connections). For each update, it will make an HTTP POST …
Run Code Online (Sandbox Code Playgroud)

ado asp-classic

2
推荐指数
1
解决办法
7312
查看次数

如何在VBA中获取RecordSet的行

如何在VBA/ADO中获取RecordSet的其他行?

我正在使用下面的代码,但这只给了我第一行。例如,记录集第三行的第二项怎么样?

Debug.Print recordSet.Fields(0)
Run Code Online (Sandbox Code Playgroud)

ms-access vba ado

2
推荐指数
1
解决办法
2万
查看次数

VB6 - 如何在一次调用中执行多个 SQL 查询

我在 VB6 中有一个旧的慢程序,它使用 ADO 在许多调用中运行许多 sql 查询。它需要太多小时。我想测试是否在一个查询中发送所有查询(其中大多数只是更新或插入)以节省网络和调用时间。我该如何实现这一点,并建议这是否可以节省时间并提高性能?

    qry = "Update table1 Set col1 = 'eerere' Where 1=1"
    qry = qry & vbCrLf & "  AND MyID = " & MyID & vbCrLf
    ExecSQL qry, DBCon, adAsyncExecute

    qry = "Insert Into TableMain"
    qry = qry & "Select  col1,col2,col3 from Table2 Where 1=1"
    qry = qry & vbCrLf & "  AND MyID = " & MyID & vbCrLf
    ExecSQL qry, DBCon, adAsyncExecute

    qry = "Update table5 Set col1 = 'eerere' Where 1=1" …
Run Code Online (Sandbox Code Playgroud)

sql-server vb6 ado

2
推荐指数
1
解决办法
491
查看次数

将列附加到 ADO 记录集

我正在尝试将列添加到 VB6 中的 ADO 记录集。我只想在表的末尾添加 4 列。这是一个我们经常使用的表,但我们经常删除其中的所有数据,并用我们想要的下一个信息重新填充它,基本上只是将它用作临时保存数据的一种手段。

我发现因为它是 ADO,所以我应该能够使用以下内容:

 with rs
     .fields.append "column name", "enum dataType"
 end with
Run Code Online (Sandbox Code Playgroud)

从阅读和实验来看,似乎必须关闭记录集才能添加列。

这是我的代码:

rs.Open "MeterReads", DataEnvironment7.cnPTracker, adOpenStatic, adLockOptimistic, adCmdTable
' 2019-11-4 Adding in a section to accomadate for days to depeletion
If gbEnableD2D Then
    bExists = False
    With rs
        For Each fField In rs.Fields
            If UCase(fField.Name) = UCase("eddB") Then
                bExists = True
                Exit For
            End If
        Next
        If bExists = False Then
            .Close
            .Fields.Append "eddB", adDate
            .Fields.Append "eddC", adDate
            .Fields.Append "eddM", adDate
            .Fields.Append …
Run Code Online (Sandbox Code Playgroud)

vb6 ado

2
推荐指数
1
解决办法
499
查看次数

1
推荐指数
1
解决办法
3万
查看次数

如何从函数返回数据库连接?

我需要修改一些用经典ASP(VBscript)编写的遗留代码.

我有一行设置数据库连接,如下所示:

set m_conn=OpenConn()
Run Code Online (Sandbox Code Playgroud)

我相信该OpenConn()函数在某个DLL中.这是坏消息,因为我们找不到该dll的源代码.所以,我一直在努力替换这个功能.这是我到目前为止:

function OpenConn()

dim conn
set conn = server.CreateObject("adodb.connection")
conn.open "XXXXconnection-stringXXXXX"  
OpenConn = conn

end function
Run Code Online (Sandbox Code Playgroud)

当我尝试运行原始行set m_conn=OpenConn()(第50行)时,我得到一个ASP错误:

Microsoft VBScript runtime error '800a01a8' 

Object required: '[string: "Provider=SQLOLEDB.1;"]' 

/path/to/include.asp, line 50 
Run Code Online (Sandbox Code Playgroud)

我不太清楚这种语法应该如何工作.通常,我在C#中工作,但是当我需要在ASP中执行这样的操作时,我会使用这样的语法:

set conn = server.createobject("adodb.conection")
conn.activeconnection = "connectionstring"
conn.execute "sql"
set conn = nothing
Run Code Online (Sandbox Code Playgroud)

无论如何,我正在寻找正确的语法,OpenConn()以便set m_conn=OpenConn()正常工作.

谢谢你的帮助.

vbscript ado asp-classic

1
推荐指数
1
解决办法
2476
查看次数