Quantcast
Channel: DataSource Controls - SqlDataSource, ObjectDataSource, etc.
Viewing all articles
Browse latest Browse all 956

Select Scope Identity

$
0
0

Hi all, 

As part of my final year project in college, we've to create a web application and I've chosen to use asp.net web forms for it, a language I've had little to do with prior to this year. Basically, I have fields which add data to the  MySQL database, now I want to use the auto-generated primary key(ProductID) that has just been added and add it as a foreign key in another table when the buttons clicked. From reading forums the Scope Identity function should do this but after trial and error I can't figure out where exactly to put it in my code. 

I am currently following a YouTube tutorial series and have had no real problems with the code he has shown up until this point. Unfortunately the solutions I have found do not fix the problem that I have.Here is a link to the tutorial which I'm currently experiencing problems with. 

Below I have attached the code of my AddProducts.aspx.cs file, my database procedure and the error message from attempting to "Update" the procedure respectively.

Thanks in advance.

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class AddProduct : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindWeight(); //create Bind for Weight category
            BindAllergens(); //create Bind for Allergens category
        }
    }

    private void BindWeight()
    {
        String CS = ConfigurationManager.ConnectionStrings["KETAdatabaseConnectionString1"].ConnectionString;
        using (SqlConnection con = new SqlConnection(CS))
        {
            SqlCommand cmd = new SqlCommand("select * from tblWeight", con);
            con.Open();
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            sda.Fill(dt);

            if (dt.Rows.Count != 0)
            {
                ddlPWeight.DataSource = dt;
                ddlPWeight.DataTextField = "Weight";
                ddlPWeight.DataValueField = "WeightID";
                ddlPWeight.DataBind();
                ddlPWeight.Items.Insert(0, new ListItem("-Select-", "0"));
            }
        }
    }

    private void BindAllergens()
    {
        String CS = ConfigurationManager.ConnectionStrings["KETAdatabaseConnectionString1"].ConnectionString;
        using (SqlConnection con = new SqlConnection(CS))
        {
            SqlCommand cmd = new SqlCommand("select * from tblAllergens", con);
            con.Open();
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            sda.Fill(dt);

            if (dt.Rows.Count != 0)
            {
                ddlPAllergens.DataSource = dt;
                ddlPAllergens.DataTextField = "AllergenName";
                ddlPAllergens.DataValueField = "AllergenID";
                ddlPAllergens.DataBind();
                ddlPAllergens.Items.Insert(0, new ListItem("-None-", "0"));
            }
        }
    }

    protected void btnAdd_Click(object sender, EventArgs e)
    {
        //https://www.youtube.com/watch?v=K_YKCHA5Hig
        String CS = ConfigurationManager.ConnectionStrings["KETAdatabaseConnectionString1"].ConnectionString;
        using (SqlConnection con = new SqlConnection(CS))
        {
            SqlCommand cmd = new SqlCommand("procInsertProducts",con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@PName",txtPName.Text);
            cmd.Parameters.AddWithValue("@PWeightID", ddlPWeight.SelectedItem.Value);
            cmd.Parameters.AddWithValue("@PPrice", txtPPrice.Text);
            cmd.Parameters.AddWithValue("@PBestBefore", txtPBestBefore.Text);
            cmd.Parameters.AddWithValue("@PAllergensID", ddlPAllergens.SelectedItem.Value);
            cmd.Parameters.AddWithValue("@PContains",txtPContains.Text);
            //cmd.Parameters.AddWithValue("@PImages", fuImg.);
            con.Open();
            Int64 PID = Convert.ToInt64(cmd.ExecuteScalar());
        }
    }
}
CREATE PROCEDURE [dbo].[procInsertProducts]
	(
	@PName nvarchar(50),
	@PWeightID bigint,
	@PPrice money,
	@PBestBefore nvarchar(50),
	@PAllergensID bigint,
	@PContains nvarchar(MAX)
	)
AS
	insert into tblProducts values (@PName, @PWeightID, @PPrice, @PBestBefore, @PAllergensID, @PContains)
	Select SCOPE_IDENTITY()
RETURN 0
/*
Deployment script for C:\USERS\JAMES\DESKTOP\FINAL YEAR PROJECT\APP_DATA\KETADATABASE.MDF

This code was generated by a tool.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
*/

GO
SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER ON;

SET NUMERIC_ROUNDABORT OFF;


GO
:setvar DatabaseName "C:\USERS\JAMES\DESKTOP\FINAL YEAR PROJECT\APP_DATA\KETADATABASE.MDF"
:setvar DefaultFilePrefix "C_\USERS\JAMES\DESKTOP\FINAL YEAR PROJECT\APP_DATA\KETADATABASE.MDF_"
:setvar DefaultDataPath "C:\Users\James\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MSSQLLocalDB\"
:setvar DefaultLogPath "C:\Users\James\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MSSQLLocalDB\"

GO
:on error exit
GO
/*
Detect SQLCMD mode and disable script execution if SQLCMD mode is not supported.
To re-enable the script after enabling SQLCMD mode, execute the following:
SET NOEXEC OFF; 
*/
:setvar __IsSqlCmdEnabled "True"
--GO
--IF N'$(__IsSqlCmdEnabled)' NOT LIKE N'True'
--    BEGIN
--        PRINT N'SQLCMD mode must be enabled to successfully execute this script.';
--        SET NOEXEC ON;
--    END


GO
USE [$(DatabaseName)];


GO

IF (SELECT OBJECT_ID('tempdb..#tmpErrors')) IS NOT NULL DROP TABLE #tmpErrors
GO
CREATE TABLE #tmpErrors (Error int)
GO
SET XACT_ABORT ON
GO
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
GO
BEGIN TRANSACTION
GO
PRINT N'Creating [dbo].[procInsertProducts]...';


GO
CREATE PROCEDURE [dbo].[procInsertProducts]
	(
	@PName nvarchar(50),
	@PWeightID bigint,
	@PPrice money,
	@PBestBefore nvarchar(50),
	@PAllergensID bigint,
	@PContains nvarchar(MAX)
	)
AS
	insert into tblProducts values (@PName, @PWeightID, @PPrice, @PBestBefore, @PAllergensID, @PContains)
	Select SCOPE_IDENTITY()
RETURN 0
GO
IF @@ERROR <> 0
   AND @@TRANCOUNT > 0
    BEGIN
        ROLLBACK;
    END

IF @@TRANCOUNT = 0
    BEGIN
        INSERT  INTO #tmpErrors (Error)
        VALUES                 (1);
        BEGIN TRANSACTION;
    END


GO

IF EXISTS (SELECT * FROM #tmpErrors) ROLLBACK TRANSACTION
GO
IF @@TRANCOUNT>0 BEGIN
PRINT N'The transacted portion of the database update succeeded.'
COMMIT TRANSACTION
END
ELSE PRINT N'The transacted portion of the database update failed.'
GO
DROP TABLE #tmpErrors
GO
PRINT N'Update complete.';


GO


Viewing all articles
Browse latest Browse all 956

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>