假设存储过程需要10分钟才能运行并且不返回任何数据.
在SQL Server中调用存储过程并让代码不等待结果的正确方法是什么?有没有办法从T-SQL或连接中处理它?在ADO.NET和经典ActiveX ADO中有效的东西?
我想到的唯一方法是:
1)在T-SQL中创建一个作业
2)将基于T-SQL的代码加载到作业的第一步中
3)确保代码的最后一行删除作业
4)执行作业(我很确定这不会让你因为回应而停下来)我知道这是非常糟糕和苛刻的......但是
还有其他一些我没想到的T-SQL,你可以用一个存储过程来说"我知道没有回应......所以我选择不等待."?
我对这个话题进行了广泛的研究,并与我的同事进行了深入的讨论.
普遍的共识似乎是,数据库连接应该在需要时打开并立即关闭.连接的任何缓存/池应该由数据库驱动程序或其他层完成,而不是由应用程序本身完成.
但是我对Jet/ADO有疑虑.Jet和/或ADO使用读取缓存和延迟写入,这可能导致"不同步"连接.当然,我每次使用JRO时都可以重新同步连接,但这似乎很麻烦,可能性能耗尽.
我应该采用关闭每个连接并重新同步每个新连接的"最佳实践",还是应该使用全局连接对象,因为Jet/ADO怪癖?
任何人都可以在Vista页面上使用sql server 2005在asp页面中显示示例连接字符串吗?
或者这个问题的任何解决方案:
Dim cnn As ADODB.Connection
Run Code Online (Sandbox Code Playgroud)
抛出错误http 500.
我想ado没有正确安装?
有任何想法吗?
如果我坚持使用Ms Jet 4.0(Ms Access 2000-2002)来开发我的桌面数据库程序,你认为我的应用程序会很快变得过时吗?那是使用旧的数据库引擎,在Windows 7等最新的Windows操作系统中无法使用?
或Jet 4.0女士仍然是一个安全的赌注?
我正在使用D5和ADO.
请分享您的想法和意见:)
谢谢!
寻找代码示例,最好使用TADOConnection.
我想将TImage的TPicture保存到MySql(最好是ODBC,而不仅仅是MySql)数据库,之后我想创建一个TImage并将图片检索到其TPicture属性.
任何代码片段,或链接到同一个?
我的任务是支持旧的VB6应用程序.(对我来说)我遇到ADO连接超时属性问题.如果服务器存在,下面的方法可以正常工作,但如果服务器不存在或网络连接没有启动,即使intTimeout设置为1,也需要整整30秒才能超时.
有没有办法让ADO更快地无法连接?这甚至可能吗?谢谢!
Public Sub GetConnectionObject(ByRef oCn As ADODB.Connection, strServer As String, strInitialCatalog As String, Optional intTimeout = 10)
Dim strConnectionString As String
strConnectionString = "Data Source=[SERVER];Provider=SQLOLEDB.1;User ID=ScanReq1;Password=ScanR3Q;Initial Catalog=[INITIALCATALOG];ConnectionTimeout=" & intTimeout & ";"
strConnectionString = Replace(strConnectionString, "[SERVER]", strServer)
strConnectionString = Replace(strConnectionString, "[INITIALCATALOG]", strInitialCatalog)
Set oCn = New ADODB.Connection
oCn.CursorLocation = adUseClient
oCn.ConnectionString = strConnectionString
oCn.CommandTimeout = intTimeout
oCn.ConnectionTimeout = intTimeout
oCn.Open
End Sub
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过Adodb.Command使用以下查询命名参数,但没有运气.
Select * From mytable Where col1 = Lower(@param1) And col2 = Upper(@param2) And col3 = @param1
Run Code Online (Sandbox Code Playgroud)
代码我使用了类似的东西.
Dim cmd
Set cmd = Server.CreateObject("Adodb.Command")
cmd.NamedParameters = True
cmd.CommandType = adCmdText
cmd.CommandText = "Select * From mytable Where col1 = Lower(@param1) And col2 = Upper(@param2) And col3 = @param1"
cmd.Parameters.Append cmd.CreateParameter("@param1", adVarchar, adParamInput, 20, "some text 1")
cmd.Parameters.Append cmd.CreateParameter("@param2", adVarchar, adParamInput, 20, "some text 2")
Set cmd.ActiveConnection = cn
Dim rs
Set rs = cmd.Execute
Run Code Online (Sandbox Code Playgroud)
问题是,这会导致RDBMS端出错.
Microsoft OLE DB Provider for …Run Code Online (Sandbox Code Playgroud) 我正在研究一种数据转换实用程序,它可以将数据从一个主数据库推送到许多不同的数据库.该实用程序本身不知道数据如何保存在目标(表结构)中,但我想提供编写SQL语句以使用具有多个连接语句的复杂SQL查询从目标返回数据.只要数据采用标准化格式,实用程序就可以识别ADO查询中的(字段名称).
我想要做的是修改此ADO查询中的实时数据.但是,由于有多个连接语句,我不确定是否可以这样做.我至少知道BDE(我从未使用过BDE),它非常严格,你必须返回所有字段(*)等.我知道ADO更灵活,但我不知道在这种情况下有多灵活.
TADOQuery当结果包含来自不同表的字段时,是否可以以这种方式修改数据?即使如此,假设我想在末尾添加一条新记录(TADOQuery.Append).它会附加到两个不同的表吗?
我正在选择的实际主表具有一个互补表,该表由相同的主键字段连接,一个是"小"表(简要信息),另一个是"详细信息"表(更多信息用于每个记录)小桌子).所以,一个典型的陈述将包括这样的事情:
select ts.record_uid, ts.SomeField, td.SomeOtherField from table_small ts
join table_detail td on td.record_uid = ts.record_uid
Run Code Online (Sandbox Code Playgroud)
其他表中还有许多其他记录连接,但我并不担心会附加到那些表中.我只是担心附加到"小"和"细节"表 - 同时.
在ADO查询中是否可以这样做?我愿意以任何必要的方式调整和修改SQL语句,以实现这一点.我有一种不好的感觉,虽然这是不可能的.
兼容性:
我使用Microsoft Jet引擎和Microsoft Access(*.mdb)数据库的应用程序在Delphi 7中出现错误.我通过TADOQuery组件建立连接.错误显示"参数iPointsNew没有默认值",只有在更新/插入查询中使用整数变量时才会发生:
frmHome.adoqryInLoop.SQL.Text := 'UPDATE Users SET Points = iPointsNew WHERE UID = "'+sUID+'"';
Run Code Online (Sandbox Code Playgroud)
事件处理程序的代码如下:
procedure TfrmAdmin.bmbSubmitClick(Sender: TObject);
var
sScore, sEID, sPrediction, sUID : String;
iRecordCount, x, iPos, iLength, iActual, iPoints, iPointsNew : Integer;
rPrediction : Real;
begin
// Assign values to variables
sScore := IntToStr(sedSuthies.Value) + '-' + IntToStr(sedOpponent.Value);
iActual := sedSuthies.Value + sedOpponent.Value;
sEID := frmHome.arrEID[lstEvents.ItemIndex];
// Update the score for the event in the database
frmHome.adoqryMain.Active := False;
frmHome.adoqryMain.SQL.Clear;
frmHome.adoqryMain.SQL.Text := 'UPDATE Events SET Score …Run Code Online (Sandbox Code Playgroud) 对于我一直在学习的学校项目,我真的很感激.你们认为可能是错的?
我和一位朋友说过,我必须确保在任何给定时间我只有1个表的活动属性设置为true.我试过这个,但它似乎没有什么区别.也许我做得不好?
这是我的程序代码:
procedure TForm1.btnChangePassUserClick(Sender: TObject);
var
sNewPass,sOldPass:string;
begin
sOldPass:= InputBox('Password verification','Please enter your current password','');
if sOldPass = sPassword then
begin
sNewPass := inputBox('Password change','Please enter a new Password with at least 1 number and letter','');
if isPasswordValid(sNewPass) then
begin
tblUsers.Active := True;
tblUsers.Edit;
tblUsers.Filtered := True;
tblUsers.Filter := 'UserID = ' +QuotedStr(sPassword);
tblUsers.First;
tblUsers['Password'] := sNewPass;
tblUsers.Post;
tblUsers.Filtered := False;
tblUsers.Filter := '';
if bRememberMe then
begin
ShowMessage('Password changed, please log in again for security purposes');
imgLogoutClick(Sender);
end; …Run Code Online (Sandbox Code Playgroud) ado ×10
delphi ×5
sql-server ×4
ms-access ×3
asp-classic ×2
delphi-7 ×2
jet ×2
sql ×2
vb6 ×2
vbscript ×2
.net ×1
ado.net ×1
connection ×1
delphi-xe2 ×1
mysql ×1
t-sql ×1
tadoquery ×1
timeout ×1