首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用scope_Identity获取要存储在会话变量中的id

使用scope_Identity获取要存储在会话变量中的id
EN

Stack Overflow用户
提问于 2011-06-16 03:47:57
回答 2查看 1.2K关注 0票数 0

我需要一些代码方面的帮助。如何让scope_Identiy将ImageId存储为会话变量。我已经坚持了很长时间了,但我就是不能让它工作。

编辑:我认为从行SqlDataReader dataReader = cmd.ExecuteReader();向下是错误的。我只是不知道如何修复它。我还是个新手。

代码语言:javascript
运行
复制
protected void btnAddImage_Click(object sender, EventArgs e)
{

    //store items in session variables
    Session["AnimalName"] = AnimalNameTextBox.Text;          
    Session["TypeOfAnimal"] = TypeofAnimalDDL.Text;
    Session["Breed"] = BreedTextBox.Text;   
    Session["CrossBreed"] = CrossBreedAddDDL.Text;
    Session["Sex"] = SexDDL.Text;
    Session["Size"] = SizeDDL.Text;
    Session["Age"] = AgeDDL.Text;
    Session["Location"] = LocationAddDDL.Text;
    Session["Date"] = DateTextBox.Text;
    Session["Contact"] = ContactTextBox.Text;
    Session["Children"] = ChildrenDDL.Text;
    Session["OtherCats"] = OtherCatsDDL.Text;
    Session["OtherDogs"] = OtherDogsDDL.Text;
    Session["Neutered"] = NeuteredDDL.Text;
    Session["Microchipped"] = MicrochippedDDL.Text;
    Session["Colour"] = ColourTextBox.Text;
    Session["IndoorOutdoor"] = IndoorOutdoorDDL.Text;
    Session["Details"] = DetailsTextBox.Text;




      string s_Image_Name = txt_Image_Name.Text.ToString();
    if (FileUpload1.PostedFile != null && FileUpload1.PostedFile.FileName != "")
    {
        int newImageID ;
        byte[] n_Image_Size = new byte[FileUpload1.PostedFile.ContentLength];
        HttpPostedFile Posted_Image = FileUpload1.PostedFile;
        Posted_Image.InputStream.Read(n_Image_Size, 0, (int)FileUpload1.PostedFile.ContentLength);

        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RescueAnimalsIrelandConnectionString"].ConnectionString);

        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = "INSERT INTO Images(Name,[Content],Size,Type) VALUES (@Image_Name,@Image_Content,@Image_Size,@Image_Type); SELECT ImageID = SCOPE_IDENTITY ()";
        cmd.CommandType = CommandType.Text;
        cmd.Connection = conn;


        SqlParameter Image_Name = new SqlParameter("@Image_Name", SqlDbType.VarChar, 500);
        Image_Name.Value = txt_Image_Name.Text;
        cmd.Parameters.Add(Image_Name);

        SqlParameter Image_Content = new SqlParameter("@Image_Content", SqlDbType.Image, n_Image_Size.Length);
        Image_Content.Value = n_Image_Size;
        cmd.Parameters.Add(Image_Content);

        SqlParameter Image_Size = new SqlParameter("@Image_Size", SqlDbType.BigInt, 99999);
        Image_Size.Value = FileUpload1.PostedFile.ContentLength;
        cmd.Parameters.Add(Image_Size);

        SqlParameter Image_Type = new SqlParameter("@Image_Type", SqlDbType.VarChar, 500);
        Image_Type.Value = FileUpload1.PostedFile.ContentType;
        cmd.Parameters.Add(Image_Type);


        SqlDataReader dataReader = cmd.ExecuteReader();

        if (dataReader.HasRows)
        {
            dataReader.Read();
            newImageID = Convert.ToInt32(dataReader["ImageID"]);
        }

        dataReader.Close();

        }
EN

回答 2

Stack Overflow用户

发布于 2011-06-16 04:00:10

两个建议:

首先,如果可能,在存储过程中执行此操作。将您的新id作为输出参数返回

其次(这可能需要一些实验和拼写检查--我还没有尝试过),在命令中添加一个输出参数,并稍微更改comamnd文本以获得值

代码语言:javascript
运行
复制
SqlParameter Image_ID = new SqlParameter("@Image_ID", SqlDbType.Int);  
Image_ID.Direction = ParameterDirection.Output;
cmd.Parameters.Add(Image_ID); 

更改命令文本:SELECT @Image_ID = SCOPE_IDENTITY()

阅读结果:int newId = Convert.ToInt32(cmd.Parameters["@Image_ID"].Value)

票数 1
EN

Stack Overflow用户

发布于 2011-06-16 04:23:52

试一试

代码语言:javascript
运行
复制
Session["newImageID"] = Convert.ToInt32(dataReader["ImageID"]);

当您想要检索newImageId时,使用

代码语言:javascript
运行
复制
int newImageID = Session["newImageID"] as Int32;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6363403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档