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
