delphisql存儲過程
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