这是我的连接
strCon="DBQ=" & Server.Mappath("db.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};PWD=password;"
set adoCon=server.createobject("adodb.connection")
adoCon.Open strCon
Run Code Online (Sandbox Code Playgroud)
因此,为了使用 2 个数据库,我有 2 个 adoCon,当我进行选择时,我会从我需要的每个数据库中进行选择
现在的问题......在这种情况下,我将只能从一个然后从另一个获取所有信息。但我想要的是能够把它们放在一起。
db1.tblcats 有类别,db2.tblcats 有类别和子类别,所以除了能够同时选择两者之外,我还需要能够知道什么是 db 中的 cat
大帮助后的第2步
这是我的代码
strSQL = "SELECT name FROM tblcats union " _
& "select name from [MS Access;PWD=pass;DATABASE=" & Server.Mappath("../shop.mdb") & "].tblcats as bcats where bcats.father=50"
rs.CursorType = 3
rs.LockType = 3
rs.Open strSQL, strCon
while not rs.eof
response.write rs("name")&"<br>"
rs.movenext
wend
Run Code Online (Sandbox Code Playgroud)
我怎么知道什么记录来自什么数据库?因为我需要为每个人采取不同的行动
使用递归函数从表中加载树视图节点很简单,但对于大数据来说需要很长时间。
我有一个包含以下字段的表:id、title、parentid :将树视图节点保持在 N 级。
该表有超过 70000 行。当我从此表中填充树视图时,需要很长时间(大约 9 分钟)才能完成。
有没有更好的解决方案来提高加载速度?
我有一个程序,当单击一个位按钮时,它会打开一个对话框来加载一些文件,并将其添加到 AdoQuery (AQSource1) 中。当我添加一些文件时,出现此错误:
“多步操作生成器错误。检查每个状态值。”
仅当我添加选定的多个文件时。但是,如果我按一个文件选择一个文件,则根本没有错误...但有时,如果我选择多个文件,此错误也不会显示......对我来说有点困惑...
如何解决这个问题?简单来说...
PS:我使用Windows 7 Pro SP1 64位,Embarcadero Delphi 2010
procedure TFMain1.btImgLoad1Click(Sender: TObject);
var i : integer;
strFilename : string;
begin
if OpenDialog1.Execute then
begin
// Add selected file to DBase and show it on DBGrid
for i := 0 to openDialog1.Files.Count-1 do
begin
// ShowMessage(openDialog1.Files[i]);
strfilename := openDialog1.Files[i];
AQSource1.Append;
AQSource1source_fileurl.Value := strFilename;
AQSource1source_filename.Value := ExtractFileName(strfilename);
AQSource1source_dateadd.Value := date();
AQSource1source_timeadd.Value := Time();
AQSource1.Post;
AQSource1.Close;
AQSource1.Open;
end;
end;
end;
Run Code Online (Sandbox Code Playgroud) 我有一个 ASP Classic 脚本,它必须做很多事情(仅限管理员),包括运行一个需要 4 分钟才能执行的存储过程。
然而,即使我有
Server.ScriptTimeout = 0
Run Code Online (Sandbox Code Playgroud)
就在页面顶部,它似乎忽略了它 - 2003 和 2012 服务器。
我已经尝试尽可能多地为 proc 建立索引,但它是为了减少经常搜索的术语,所以我必须清除所有黑客、性垃圾邮件等。
我不明白的是为什么 Server.ScriptTimeout = 0 被忽略了。
实际的错误是这样的
Active Server Pages 错误“ASP 0113”
脚本超时
/admin/restricted/fix.asp
已超出脚本执行的最长时间。您可以通过为属性 Server.ScriptTimeout 指定新值或更改 IIS 管理工具中的值来更改此限制。
它从来没有这样做过,它应该覆盖 IIS 中 30 秒的默认设置。
我已确保 proc 的命令超时为 0,因此无限制,并且在从 proc 返回后出错。
有人有任何想法吗?
我正在尝试添加参数SqlCommand,但它插入参数名称而不是参数值.
这是代码片段:
var QueryString1 = "Insert into UsersTable (Username, Password, IsAdmin, Email, Budget, Phone) " +
"values ('@Un', '@P','" + user.IsAdmin + "', '@E', '@B', '@Ph')";
using (SqlCommand command = new SqlCommand(QueryString1, con))
{
command.Parameters.Add("@Un", SqlDbType.Text);
command.Parameters["@Un"].Value = user.UserName;
command.Parameters.Add("@P", SqlDbType.Text);
command.Parameters["@P"].Value = user.Password;
command.Parameters.Add("@E", SqlDbType.Text);
command.Parameters["@E"].Value = user.Email;
command.Parameters.Add("@B", SqlDbType.Text);
command.Parameters["@B"].Value = user.Budget.Amount + "-" + user.Budget.Currency;
command.Parameters.Add("@Ph", SqlDbType.VarChar);
command.Parameters["@Ph"].Value = user.Phone;
if (command.ExecuteNonQuery().Equals(0))
{
con.Close();
return InternalServerError();
}
con.Close();
return Ok();
}
Run Code Online (Sandbox Code Playgroud)
抱歉模糊记录:)
我的“经典 ASP”应用程序在 Windows Server 2003 上,使用 ADO 连接到 SQL Server 2008 数据库。
数据库服务器正在从变更升级,并将运行 SQL Server 2017。
我试图证明旧应用程序仍然可以工作,连接到这个较新版本的 SQL Server。
到目前为止,我还没有成功地从旧的 WS2003 机器连接到 SQL Server 2017 安装。
我不确定需要安装哪些 OLEDB 或 ODBC 提供程序或驱动程序才能使其正常工作,以及最终需要什么连接字符串。
我创建了一个小型演示程序,使用与实际应用程序相同的代码来建立连接。本质上,我在这里所做的只是提供一个连接字符串并尝试连接。这是使用 ADO 的 VB6:
Private Sub btnConnect_Click()
Dim theConnection As New ADODB.Connection
theConnection.ConnectionString = Text1.Text
theConnection.Open ConnectString
If theConnection.State = 1 Then
MsgBox ("connected ")
Else
MsgBox ("failed to connect ")
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
我可以让这个程序在新服务器上运行 - 带有 SQL Server 2017 的服务器,并且它成功连接。
此连接字符串有效:
Driver={SQL Server Native Client 11.0};Server=192.168.0.23;Database=TestDB;Uid=user1;Pwd=xxx;
Run Code Online (Sandbox Code Playgroud)
这也有效: …
我试图从数据库中一组的值传递到TEdit当在一个项目被选中TComboBox。但是,返回的值应该是字符串,而不是整数。在组的文本字段中,返回的值为 0。谁能帮我解决这个问题?
这是文本字段的代码,它应该根据 a 中选择的项目返回组数据TComboBox:
ADOQuery1.SQL.Clear;
rf := ADOQuery1.SQL.Add('SELECT grouppp FROM f3_sheet WHERE holder = "' +cb1.Text +'"');
gpp.Text := rf;
Run Code Online (Sandbox Code Playgroud) 我正在使用ADO将数据保存到MS Access数据库.将数据保存到文件需要相当长的时间(大约7秒 - 这对于我们的目的来说太长了).我查看了正在运行的SQL查询的数量,它大约是4200; 虽然没有一大堆数据.
数据库连接似乎是瓶颈.你知道如何减少这个时间吗?要么通过某种方式将多个语句组合成一个以减少开销,或者某些ADO/MS-Access技巧?
例如,您可以一次在表中插入多行,这会明显加快吗?
额外信息:
我们有这么多查询的一个原因是我们插入一行,然后有另一个查询来检索它的自动增量ID; 然后使用此ID插入更多行,将它们链接到第一行
回应几条评论和回复:我将整个时间保持连接状态,并将其作为单个事务执行,使用BeginTransaction()和CommitTransaciton()
我需要帮助理解为什么我的SQL不起作用.或者,如果我需要以不同的方式编写它以获得我需要的结果.正如标题所示,我使用的是Delphi 7,ADO组件和MS Access 2000数据库.您可以在此处查看第I部分中的表结构:
帮助Delphi 7,ADO和MS Access SQL语句
我目前用来获取基于关键字的所有知识的SQL如下:
select*from(知识K
内连接knowledge_keywords KKW on KKW.knowledgeid = K.id)
内连接关键字KW on KW.id = KKW.keywordid
where(KW.keyword ='job')AND(KW.keyword ='task' )
然而,当知识id中具有相同知识id的那两个单词中显然存在这两个单词时,这不会返回并产生结果.
但是,如果我使用OR而不是AND执行相同的SQL,我会得到我预期的两条记录
select*from(知识K
内连接knowledge_keywords KKW on KKW.knowledgeid = K.id)
内连接关键字KW on KW.id = KKW.keywordid
where(KW.keyword ='job')AND(KW.keyword ='task' )
谢谢你的帮助
ado ×10
delphi ×5
ms-access ×3
sql ×3
sql-server ×2
asp-classic ×1
bde ×1
c# ×1
database ×1
delphi-7 ×1
optimization ×1
performance ×1
select ×1
t-sql ×1
tadoquery ×1
timeout ×1
treeview ×1
union ×1
vbscript ×1