Indsætte flere ting i databasen
HejsaJeg sidder med et problem.
Jeg har et produkt møbel og når jeg opretter et produkt vil jeg godt vælge nogle farver i en checkboxlist og indsætte det i databasen. Så der evt bliver en blå, grøn og pink farve som høre til et møbel produkt. Jeg har leget lidt med scope_identity man kan ikke se hvad jeg gør forkert.
Møbel tabel ser sådan ud:
CREATE TABLE [dbo].[moebler] (
[moebel_id] INT IDENTITY (1, 1) NOT NULL,
[navn] VARCHAR (200) NOT NULL,
[pris] DECIMAL (18) NOT NULL,
[varenr] VARCHAR (50) NOT NULL,
[fk_designer_id] INT NOT NULL,
[fk_kategorier_id] INT NOT NULL,
[design_aar] VARCHAR (50) NOT NULL,
[beskrivelse] TEXT NOT NULL,
PRIMARY KEY CLUSTERED ([moebel_id] ASC)
Min farve tabel ser sådan ud:
CREATE TABLE [dbo].[farve] (
[farve_id] INT IDENTITY (1, 1) NOT NULL,
[farver] VARCHAR (50) NOT NULL,
[fk_moebler_id] INT NOT NULL,
PRIMARY KEY CLUSTERED ([farve_id] ASC)
);
Selve koden i backend ser sådan her ud:
Her fylder jeg checkboxlisten:
adapt = new SqlDataAdapter(" SELECT * FROM farve", conn);
DataTable farve = new DataTable();
adapt.Fill(farve);
CheckBoxList1.DataSource = farve;
CheckBoxList1.DataValueField = "farve_id";
CheckBoxList1.DataTextField = "farver";
CheckBoxList1.DataBind();
Her prøver jeg at indsætte i databasen:
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO moebler (navn, pris, varenr, fk_designer_id, fk_kategorier_id, design_aar, beskrivelse) VALUES(@navn, @pris, @varenr, @designID, @kategoriID, @designaar, @indhold); SELECT SCOPE_IDENTITY()";
cmd.Parameters.Add("@navn", SqlDbType.VarChar).Value = TextBox_navn.Text;
cmd.Parameters.Add("@pris", SqlDbType.Decimal).Value = TextBox_pris.Text;
cmd.Parameters.Add("@varenr", SqlDbType.VarChar).Value = TextBox_pris.Text;
cmd.Parameters.Add("@designID", SqlDbType.Int).Value = DropDownList_designer.SelectedValue;
cmd.Parameters.Add("@kategoriID", SqlDbType.Int).Value = DropDownList_serie.SelectedValue;
cmd.Parameters.Add("@designaar", SqlDbType.VarChar).Value = Textbox_aar.Text;
cmd.Parameters.Add("@indhold", SqlDbType.Text).Value = Textbox_indhold.Text;
conn.Open();
object moebel_id = cmd.ExecuteScalar();
conn.Close();
if (CheckBoxList1.SelectedIndex != -1)
{
for (int i = 0; i < CheckBoxList1.Items.Count; i++)
{
if (CheckBoxList1.Items[i].Selected)
{
cmd.CommandText = "INSERT INTO farve (farver, fk_moebler_id) VALUES (@farve, @fk_moebler_id)";
cmd.Parameters.Add("@filnavn", SqlDbType.VarChar).Value = CheckBoxList1.Items[i].Value;
cmd.Parameters.Add("@fk_moebler_id", SqlDbType.Int).Value = moebel_id;
}
else if (CheckBoxList1.Items[i].Selected)
{
cmd.CommandText = "INSERT INTO farve (farver, fk_moebler_id) VALUES (@farve, @fk_moebler_id)";
cmd.Parameters.Add("@filnavn", SqlDbType.VarChar).Value = CheckBoxList1.Items[i].Value;
cmd.Parameters.Add("@fk_moebler_id", SqlDbType.Int).Value = moebel_id;
}
}
}
Response.Redirect("produkter.aspx");
}