原贴地址
http://community.csdn.net/Expert/topic/5315/5315666.xml?temp=.939419我想出错的地方:
@SiteID int output,SET @SiteID = (SELECT scope_identity() )spt = new SqlParameter("@SiteID", SqlDbType.Int, 4);
spt.Direction = ParameterDirection.Output;
com.Parameters.Add(spt);谢谢 很急啊

解决方案 »

  1.   

    正确写法创建数据库语句CREATE TABLE [ConcertSite] (
    [SiteID] [int] IDENTITY (1, 1) NOT NULL ,
    [CityID] [int] NOT NULL ,
    [SupplierID] [int] NULL ,
    [Address] [nvarchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
    [SiteName] [nvarchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
    [MapRoad] [nvarchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
    [SitePic] [nvarchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
    [Intro] [nvarchar] (4000) COLLATE Chinese_PRC_CI_AS NULL ,
    [Re] [ntext] COLLATE Chinese_PRC_CI_AS NULL ,
    CONSTRAINT [PK_ConcertSite] PRIMARY KEY  CLUSTERED 
    (
    [SiteID]
    )  ON [PRIMARY] 
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
    GO
    存储过程CREATE PROCEDURE [insert_ConcertSite_1]
    (
        @SiteID int output,
     @CityID  [int],
     @SupplierID  [int],
     @Address  [nvarchar](500),
     @SiteName  [nvarchar](50),
     @MapRoad  [nvarchar](500),
     @SitePic  [nvarchar](500),
     @Intro  [nvarchar](4000),
     @Re  [text])AS INSERT INTO [ConcertSite] 
     ( [CityID],
     [SupplierID],
     [Address],
     [SiteName],
     [MapRoad],
     [SitePic],
     [Intro],
     [Re]) 
     
    VALUES 
    ( @CityID,
     @SupplierID,
     @Address,
     @SiteName,
     @MapRoad,
     @SitePic,
     @Intro,
     @Re)
    SET @SiteID = (SELECT scope_identity() )
    GO
    代码,里面的例子使用了固定的参数值,可以替换
      SqlConnection con = new SqlConnection(Util.GetConnectionString("AppConnectioNString"));
        con.Open();
        SqlCommand com = new SqlCommand("insert_ConcertSite_1", con);
        com.CommandType = CommandType.StoredProcedure;
        SqlParameter spt = new SqlParameter();
        spt = new SqlParameter("@SiteID", SqlDbType.Int, 4);
        spt.Direction = ParameterDirection.Output;
        com.Parameters.Add(spt);
        spt = new SqlParameter("@CityID", SqlDbType.Int, 4);
        spt.Value = 1;
        com.Parameters.Add(spt);
        spt = new SqlParameter("@SupplierID", SqlDbType.Int, 4);
        spt.Value = 2;
        com.Parameters.Add(spt);
        spt = new SqlParameter("@Address", SqlDbType.NVarChar, 500);
        spt.Value ="aaa";
        com.Parameters.Add(spt);
        spt = new SqlParameter("@SiteName", SqlDbType.NVarChar, 50);
        spt.Value = "aaa";
        com.Parameters.Add(spt);
        spt = new SqlParameter("@MapRoad", SqlDbType.NVarChar, 500);
        spt.Value = "aaa";
        com.Parameters.Add(spt);
        spt = new SqlParameter("@SitePic", SqlDbType.NVarChar, 500);
        spt.Value = "aaa";
        com.Parameters.Add(spt);
        spt = new SqlParameter("@Intro", SqlDbType.NVarChar, 4000);
        spt.Value = "aaa";
        com.Parameters.Add(spt);    spt = new SqlParameter("@Re", SqlDbType.Text, 16);
        spt.Value = "aaa";
        com.Parameters.Add(spt);
        int i = Convert.ToInt32(com.ExecuteNonQuery());
        int outID = (int)com.Parameters["@SiteID"].Value;
        com.Connection.Close();
        Response.Write(outID);
      

  2.   

    注意:必须有一个标识列,且不能自己赋值
    也就是自增列SiteID
      

  3.   

    可以了..是asp.net可能取值有问题,但我输入的都是数字不会错的啊.等等我看哪里出错了就结贴
      

  4.   

    哦我知道了是我的SupplierID为""空
    所以类型不正确再问一下如果上面的那条存储过程我还想返回他是当前第几条记录要怎么办呢
    因为ID是记录号,而我要返回表里有多少条记录要怎么办谢谢
      

  5.   

    select count(*) from ConcertSite
      

  6.   

    Click the link to solve your problem.Good luck!