c# Stored procedures inserting into database and datasets

EDN Admin

Well-known member
Joined
Aug 7, 2010
Messages
12,794
Location
In the Machine
Im new to datasets and Im still not 100% sure I understand how its all working. Ive got the following code and an accompanying stored procedure that seems to work how intended when run directly on the database.
<div style="color:Black;background-color:White; <pre>
<span style="color:Blue; for (<span style="color:Blue; int i = 0; i < dgSoftwareAnalysis1.RowCount ; i++ )
{
<span style="color:Blue; if (dgSoftwareAnalysis1.Rows.Cells[0].Value.Equals(<span style="color:Blue; true))
{
<span style="color:Blue; string softwareName = dgSoftwareAnalysis1.Rows.Cells[1].Value.ToString();

<span style="color:Blue; string uniqueSoftware = <span style="color:#A31515; "fe_i_GenericMachine";
SqlCommand cmd = <span style="color:Blue; new SqlCommand(uniqueSoftware, sqlCon);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(<span style="color:Blue; new SqlParameter(<span style="color:#A31515; "@RunVersionID", machineVersion1));
cmd.Parameters.Add(<span style="color:Blue; new SqlParameter(<span style="color:#A31515; "@MachineName", machine1Name));
cmd.Parameters.Add(<span style="color:Blue; new SqlParameter(<span style="color:#A31515; "@DisplayName", softwareName));
SqlDataAdapter adp = <span style="color:Blue; new SqlDataAdapter(cmd);
<span style="color:Green; //System.Data.DataTable dt = new System.Data.DataTable(); adp.Fill(dt);
<span style="color:Green; //dgSoftwareAnalysis1.DataSource = dt;
}


}
[/code]
I commented out the last two lines of code because I was getting and error, SQLException unhandled: Subquery returned more than 1 value.
Im a bit confused as the stored proc isnt meant to select anything, instead its to insert values.
<pre>CREATE PROC [dbo].fe_i_GenericMachine(@RunVersionID int,
@MachineName varchar(250),
@DisplayName varchar(250)
)
AS
BEGIN

declare @MachineID int
declare @SoftwareID int
declare @DateRun varchar(250)
declare @SerialKey varchar(250)
declare @InstalledLocation varchar(250)
declare @InstallDate varchar(250)

set @machineID = (select machineID from machine where MachineName = @machineName)
set @SoftwareID = (select Softwareid from Software where DisplayName = @DisplayName)
set @DateRun = (select DateWritten from PCSoftware
inner join Software on PCSoftware.softwareID = software.softwareID
where machineid = @MachineID AND RunVersionID = @RunVersionID AND Software.DisplayName = @DisplayName)
set @SerialKey = (select SerialKey from PCSoftware
inner join Software on PCSoftware.softwareID = software.softwareID
where machineid = @MachineID AND RunVersionID = @RunVersionID AND Software.DisplayName = @DisplayName)
set @InstalledLocation = (select InstallLocation from PCSoftware
inner join Software on PCSoftware.softwareID = software.softwareID
where machineid = @MachineID AND RunVersionID = @RunVersionID AND Software.DisplayName = @DisplayName)
set @InstallDate = (select InstallDate from PCSoftware
inner join Software on PCSoftware.softwareID = software.softwareID
where machineid = @MachineID AND RunVersionID = @RunVersionID AND Software.DisplayName = @DisplayName)


if not exists (SELECT * from PCSoftware as pc
inner join machine as m
on m.machineID = pc.machineID
where RunVersionID = 1
AND M.MachineName = Generic
AND pc.softwareID = @SoftwareID)
BEGIN

INSERT PCSoftware (RunVersionID,
MachineID,
CurrentUser,
SoftwareID,
DateWritten,
SerialKey,
InstallLocation,
installDate
)
VALUES (1,
158,
Generic,
@SoftwareID,
@DateRun,
@SerialKey,
@InstalledLocation,
@InstallDate
)

END

ELSE

BEGIN
SELECT Error: Item already exists
END

END[/code]
Any explanations would help thanks


View the full article
 
Back
Top