當前位置:首頁 » 存儲配置 » delphisql存儲過程

delphisql存儲過程

發布時間: 2023-01-01 08:07:33

1. 關於DelPhi調用存儲過程,用sql server自帶的「創建存儲過程向導」給表login建立一個更新存儲過程。

關於DelPhi調用存儲過程,用SQL server自帶的「創建存儲過程向導」給表login建立一個更新存儲過程。
懸賞分:100 | 離問題結束還有 12 天 18 小時 | 提問者:風風我依 | 檢舉 存儲過程代碼如下:已知表login有passname和password兩個欄位。
CREATE PROCEDURE [update_login_1]
(@passname_1 [varchar],
@passname_2 [varchar](50),
@password_3 [varchar](50))

AS UPDATE [wqzx].[dbo].[login]

SET [passname] = @passname_2,
[password] = @password_3

WHERE
( [passname] = @passname_1)
GO
-------------------------------------------------------------------------------------
在delp調用該存儲過程,要求只該改欄位中的password,即建一個文本框將裡面內容替換一個記錄中的password,而保持passname不變,簡單講就是修改一個用戶名的密碼。怎麼寫代碼?問題補充:

"強唐華"我試過這樣寫存儲過程了,沒用的,如果可以,那在delphi中怎麼寫代碼調用這個存儲過程?
強調下:這是sql自帶建立的存儲過程,就是由「創建存儲過程向導」生成,我覺得不會錯的,問題是怎麼在Delphi中調用該存儲過程,代碼呢?

我建立了一個插入的存儲過程,代碼如下:
WITH StoredProc1 DO
begin
parambyname('@passname_1').AsString:=edit1.Text;
parambyname('@password_2').AsString:=edit2.Text;
execproc;
if params[0].asinteger=0 then
MessageDlg('添加新用戶名成功!',mtinformation,[mbOK],0)
else
MessageDlg('添加用戶失敗!',mterror,[mbOK],0);
end;
這段代碼是可以成功插入一個記錄的。現在是想修改某個記錄。

回答 共1條

CREATE PROCEDURE [dbo].[update_login]
(@name varchar(50),
@password [varchar](50))

AS
UPDATE useres SET password=@password WHERE name= @name
這么簡單的存儲過程,都不會用?
SqlConnection conn = new SqlConnection("Data Source=TQ-PC;Initial Catalog=tq;User ID=sa;Password=123");
SqlCommand cmd = new SqlCommand("update_login", conn);
cmd.CommandType = CommandType.StoredProcere;
cmd.Parameters.AddWithValue("@name", TextBox3.Text.Trim());
cmd.Parameters.AddWithValue("@password", TextBox4.Text.Trim());
conn.Open();
int i = cmd.ExecuteNonQuery();
if (i > 0)
Response.Write("密碼修改成功!");
else
Response.Write("密碼修改失敗!");

2. delphi中如何調用sql存儲過程

最好用
adoStoredProc.close;
adoStoredProc.ProcereName := '過程名';
adoStoredProc.Parameters.refresh;
adoStoredProc.Parameters.ParamByName('過程變數1').value := 變數1;
adoStoredProc.Parameters.ParamByName('過程變數2').value := 變數2;
try
adoStoredProc.execproc;
except
//執行過程失敗處理代碼;
end;
if adoStoredProc.parameters[0].value <> 0 then
begin
//存儲過程返回值錯誤 處理代碼
end;

不要用
Parameters[1].Value 這種形式 有如果存儲過程增加參數 改起來不直觀。

3. 在delphi 中怎麼利用sql中的存儲過程的返回值

寫query控制項sql語句的時候這樣寫:
declare
@r
int
exec
@r
=
myproc
select
@r
as
result
然後open,用fieldbynmae讀取result欄位的值

4. delphi 怎麼調用SQL2005存儲過程

用ADOquery 可以調用

ADOquery1.Add(p_getData :StrName, :StrField, :StrDT1, :StrDT2);

5. Delphi、MS SQL Server開發環境下存儲過程的使用

一 概述 Delphi + MS SQL Server是目前最為流行的管理信息系統開發環境和工具 Delphi的強大資料庫操作控制項極大地減輕了開發人員的工作量 在這些控制項中 最常用的有TQuery TTable TADOQuery TADOTable TADODataSete等 這些控制項執行查詢操作時有一個共同的特點 即將所有資料庫記錄從伺服器取回客戶端 再根據查詢的條件進行篩選 很明顯 如果有大量的數據在伺服器與客戶端之間傳遞 就會降低程序執行的速度 影響應用程序的性能 針對這種情況 MS SQL Server資料庫和Delphi開發工具都提供了存儲過程來解決這類問題 存儲過程是一段在伺服器上執行的程序 它在伺服器端對資料庫記錄進行處理 再把結果返回到客戶端 通過使用存儲過程 一方面可以利用伺服器強大的計算能力和速度 另一方面避免把大量的數據從伺服器下載到客戶端 減少網路上傳輸量 伺服器只需將計算結果傳給客戶端 其效率之高是非常明顯的

二 創建存儲過程 在MS SQL Server上的存儲過程可分為二類 一類是類似於select 查詢 用於檢索數據 檢索到的數據能夠以數據集的形式返回給客戶端 如CREATE procere proc @dw char( )asselect dwdm from cchdwdm where dw=@dw該存儲過程有一個輸入參數 @dwdm 以數據集的形式返回結果 另一類存儲過程是通過輸出參數返回信息或不返回信息 或只執行一個動作 如 CREATE procere proc @m *** allint @m *** allint@result int OUTPUTasselect @result=@m *@m 該存儲過程有二個輸入參數@m @m 還有一個輸出參數@result 按照創建存儲過程的時機來劃分 創建存儲過程也有二種方式 一是利用MS SQL Server的Enterprise Manager中的SQL Server Query Analyzer工具 此方法較簡單 只要輸入存儲過程語句並保存即可 創建存儲過程的另一種方式是利用Delphi的控制項 如TQuery TADOQuery 通過使用SQL語句在運行時動態地創建存儲過程 如下例所示 with query dobeginparamcheck := false;with SQL dobeginclear;add( create procere proc );add( @dw char( ) );add( as );add( select dwdm from cchdwdm where dw=@dw );endexecsql;end;

三 存儲過程的參數 存儲過程一般有四種參數類型 *輸入參數 由客戶程序向存儲過程傳遞*輸出參數 由存儲過程向客戶傳遞*輸入/輸出參數 可雙向傳遞*狀態參數 由存儲過程向客戶返回錯誤信息通過使用Delphi控制項TADOStoredProc或TStoredProc來設置或獲取存儲過程的參數 如 ADOStoredProc parameters parambyname( @name ) value:= 張三 ;

四 在Delphi中使用存儲過程的方法 在Delphi中使用存儲過程有以下幾個步驟 把TADOStoredProc或TStoredProc放到窗體上 設置參數連接到MS SQL Server資料庫 設置ProcereName參數 指定存儲過程名 也可以在程序運行期設置 單擊TParameters邊上的省略號按鈕 如果設置正確 則可看到所有的輸入輸出參數 在代碼中設置存儲過程的輸入參數 執行存儲過程並獲取返回的數據 通過調用TADOStoredProc控制項的parambyname方法 設置好所有的輸入參數 再調用open方法執行存儲過程 如果存儲過程返回參數 同樣用parambyname方法獲取參數值 如果返回數據集 則用訪問數據集的TFields的方法獲取各記錄 如以下代碼所示

lishixin/Article/program/Delphi/201311/24981

6. delphi 中如何調用sql 存儲過程

使用TADOStoredProc組件,可以,給你舉個例子好了

with ADOStoredProc1 do
begin
Close;
Parameters.Clear;
ProcereName:='SaveDate_dbzsm'; //存儲過程名稱
Parameters.CreateParameter('v_wlid', ftString, pdInput, 20, fgUnassigned);//傳入參數(數字代表長度)
Parameters.CreateParameter('v_ddid', ftString, pdInput, 20,fgUnassigned); //傳入參數
Parameters.CreateParameter('v_tm', ftString, pdInput, 500,fgUnassigned); //傳入參數
Parameters.CreateParameter('v_returnstr', ftString, pdoutput, 30,fgUnassigned); //返回值
//為參數賦值
Parameters[0].Value :=trim(edit1.text);
Parameters[1].Value := trim(edit2.text);
Parameters[2].Value := trim(edit2.text);
Parameters[3].Value := ' ';

ExecProc;
reuturn:= Trim(Parameters.ParamByName('v_returnstr').Value);
end;
reuturn就是返回值,你可以放到stringgrid 裡面。

也可以用adoquery 連接存儲過程。

with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('exec SaveDate_dbzsm :wlid,:ddid,:tm,:returnstr output');
Parameters.ParamByName('wlid').Value :=trim(edit1.text);
Parameters.ParamByName('ddid').Value :=trim(edit2.text);
Parameters.ParamByName('tm').Value := trim(edit3.text);
Parameters.ParamByName('returnstr').Value := ' ';
Open;
reuturn:= Parameters.ParamByName('returnstr').Value;
end;

http://..com/question/316727588.html

7. Delphi怎樣使用存儲過程參數

調用存儲過程推薦使用Query,Adoquery組件
query.close;
query.sql.clear;
query.sql.add('exec db.prtemp(@id=:id)');
query.parambyname('id').asinteger:=1;
query.open;
----------------------------------------------------------------------------------------------------
也可用Tstoredproc
storedproc1.active=false;
storedproc1.databasename="dbname";
storedproc1.storedprocname="strdprcname";
storedproc1.params.clear;
storedproc1.params.createparam(ftstring,"p1",ptinput);
storedproc1.params.createparam(ftstring,"p2",ptinput);
storedproc1.params.parambyname("p1").asstring:=varstring1;
storedproc1.params.parambyname("p2").asstring:=varstring2;
storedproc1.active=true;
----------------------------------------------------------------------------------------------------
調用存儲過程最好使用Query組件,本人就是用Tstoredproc組件而屢屢出錯!這一段痛心疾首的錯誤老是涉及到ISAPI32.dll,讓我這個丈二和尚模不到屁股。使用Query控制項調用存儲過程如下:
加入你的存儲過程有兩個參數:
CREATE PROCEDURE Procere_Name @proc1 int,@proc2 char(8)
AS
……
則你的Query1控制項的代碼如下:
With Query1 do
Begin
Close;
SQL.Clear;
SQL.Add(' Exec Procere_Name :proc1,:proc2 ');
ParamByName('proc1').Value:=4;
ParamByName('proc2').Value:='Hello';
Try
ExecSQL;
Except
raise;
End
End

8. delphi 如何接住sql 存儲過程output傳下來的參數

譬如這樣一個存儲過程
create procere proc_inserttea(@i int output,@id char(10),@name char(10),@title char(20),@grade char(5))
as
insert into teacher(Tid,Tname,title,Tgrade) values(@id,@name,@title,@grade)
select @i=id from teacher where Tid=@id
傳出id這個參數,用ADOStoredProc去接收
storeproc.ProcereName:='proc_inserttea';
storeproc.Parameters.CreateParameter('i',ftInteger,pdOutput,0,null);
storeproc.Parameters.CreateParameter('id',ftString,pdInput,10,Edit6.Text);
storeproc.Parameters.CreateParameter('name',ftString,pdInput,10,Edit7.Text);
storeproc.Parameters.CreateParameter('title',ftString,pdInput,20,Edit8.Text);
storeproc.Parameters.CreateParameter('grade',ftString,pdInput,10,Edit9.Text);
storeproc.ExecProc;
TeaId:=storeproc.Parameters.ParamByName('i').Value;
這是一種方法

9. 在delphi 中怎麼利用sql中的存儲過程的返回值

存儲過程:
Create procere proc_login
username varchar(20),
password varchar(20)
as
declare @result int
select @result=count(*) from table1 where user=@username and pass=@password
if @result=0
return 0
return 1
go

delphi代碼:
var ret:integer;
......
with ADOStoredProc1 do
begin
Close;
ProcereName:='proc_login';
Parameters.Clear;
Parameters.Refresh;
Parameters.ParamByName('@username').Value:= Edit1.text;
Parameters.ParamByName('@password').Value:= Edit2.text;
ExecProc;
ret:= Parameters.ParamByName('@return_value').Value;
end;
if ret=1 //用戶名密碼匹配
begin
//你想要的操作
end

熱點內容
新名圖配置怎麼樣 發布:2024-05-19 09:31:30 瀏覽:94
php獲取子節點 發布:2024-05-19 09:21:18 瀏覽:160
php生成html 發布:2024-05-19 09:20:24 瀏覽:795
keil編譯步驟 發布:2024-05-19 08:58:12 瀏覽:702
ipad有哪些好用的c語言編譯器 發布:2024-05-19 08:41:56 瀏覽:767
征途手游版腳本 發布:2024-05-19 08:38:11 瀏覽:165
安卓咪咕音樂怎麼錄制視頻 發布:2024-05-19 07:56:06 瀏覽:838
如何搞出超大聲的聽聲辨位安卓版 發布:2024-05-19 07:46:21 瀏覽:927
linux安全模式 發布:2024-05-19 07:27:25 瀏覽:176
為什麼安卓手機安裝不了cpk 發布:2024-05-19 07:22:21 瀏覽:313