zoukankan      html  css  js  c++  java
  • Delphi调用存储过程

    一测试存储过程

    CREATE PROCEDURE DelphiSql
    @age int
     AS
    begin
    select * from person where nianling>@age;
    end;
    GO

    调用例子 通过ADOQUERY调用代码

    procedure TForm1.btn1Click(Sender: TObject);
    var
      listitem:TListItem ;
    begin
    with qry1 do
    begin
      Close ;
      SQL.Clear ;
      SQL .Add('execute delphisql :queryage');
      Parameters .ParamByName('queryage').Value := 20;

      ExecSQL ;
      Open ;
    while not Eof do
    begin
      with lv1 do
      begin
        listitem :=lv1 .Items .Add ;
        listitem .Caption := fieldbyname('bianhao').asstring;
        listitem .SubItems .Add(fieldbyname('xingming').asstring);
        listitem .SubItems .Add(fieldbyname('pyjianma').asstring);
        listitem .SubItems .Add(fieldbyname('xingbie').asstring);
        listitem .SubItems .Add(fieldbyname('nianling').asstring);
        listitem .SubItems .Add(fieldbyname('zhuzhi').asstring);
        end;
      Next;
      end;
    end;
    end;

    delphi如何调用sql存储过程,并获取结果
    adostoredproc1.Close;
    adostoredproc1.ProcedureName:=\'sp_thchl\';
    adostoredproc1.Parameters.Clear;
    adostoredproc1.Parameters.CreateParameter(\'out\',ftInteger,pdoutput,1,1);
    adostoredproc1.ExecProc;
    edit1.Text :=adostoredproc1.Parameters[0].Value;

    前言  

            首先,打开sql server管理器,在pubs数据库中建一个测试表,表名为test,字段有id,name,和desc,全部为字符型,如果你不知道建表,那么打开sql查询分析器,贴上以下的代码,然后按执行,就会自动生成test表.
    use pubs
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[test]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[test]
    GO

    CREATE TABLE [dbo].[test] (
    [id] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
    [name] [char] (12) COLLATE Chinese_PRC_CI_AS NULL ,
    [descrip] [char] (30) COLLATE Chinese_PRC_CI_AS NULL
    ) ON [PRIMARY]
    GO

    然后,我们来创建一个存储过程,其功能为在test中插入一条新记录.创建存储过程的代码如下,同样的,你也可以复制到查询分析器里直接执行就可以:
    CREATE PROCEDURE myInsert
    @id char(10) ,
    @name varchar(12),
    @descrip varchar(30)

    AS
    begin

    insert into test (id,name,descrip) values (@id,@name,@descrip)

    if @@rowcount=0
    begin
    raiserror('error',16,1)
    rollback transaction
    end
    end
    GO

    接下来,新建一个工程文件,在form1上放置如下控件,并设置属性(括号内):
    一个ADOConnection1: TADOConnection;
    (LoginPrompt:=false;
    connectionstring:=Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Initial Catalog=pubs;Data Source=(local);)

    一个ADOStoredProc1: TADOStoredProc;属性为:
    (connection:=adoconnection1;
    procedurename:=myinsert;//上面我们创建的那个)

    一个ADOTable1: TADOTable;属性为:
    (connection:=adoconnection1;
    tablename:=test; //上面我们创建的那个)

    一个Datasource1,属性为:
    (dataset:=Tadotable;)

    一个 DBGrid1: TDBGrid;属性为
    (datasource:=datasource1;)

    一个Button1,在其Onclick中写到:
    with adoStoredproc1 do
    begin
    Parameters.ParamByName('@id').Value := '2';
    parameters.ParamByName('@name').Value := 'myname';
    parameters.ParamByName('@descrip').Value :='nosubject';
    ExecProc;
    end;
    Adotable1.Close;
    adotable1.Open;

  • 相关阅读:
    168. Excel Sheet Column Title
    171. Excel Sheet Column Number
    264. Ugly Number II java solutions
    152. Maximum Product Subarray java solutions
    309. Best Time to Buy and Sell Stock with Cooldown java solutions
    120. Triangle java solutions
    300. Longest Increasing Subsequence java solutions
    63. Unique Paths II java solutions
    221. Maximal Square java solutions
    279. Perfect Squares java solutions
  • 原文地址:https://www.cnblogs.com/shylock/p/1339559.html
Copyright © 2011-2022 走看看