Avatar billede Slettet bruger
23. september 2014 - 12:49

Tjek Database om værdi eksisterer ellers indsæt

Hejsa,

Jeg har en windowsform hvor jeg vil gemme noget metadata.

I den vil jeg så gerne tjekke i min metadatatable om den eksisterer i forvejen og hvis dne gør, så skal den ikke gøre noget. Hvis den ikke eksisterer skal den gemme den.

Jeg har prøvet følgende men kan ikke få det til at virke og det er som om den looper og hver enkelt værdi jeg har i min metatable.

private void Savelistboxbtn_Click(object sender, EventArgs e)
        {
            string conn = "Server=localhost;Initial Catalog=MetaData;Integrated Security=SSPI;";
            string querysequence = "select NEXT VALUE FOR  Metadata.dbo.MetaIDbiml as MetaID";

            SqlConnection connDatabase = new SqlConnection(conn);

            connDatabase.Open();

            SqlCommand cmdseq = new SqlCommand(querysequence, connDatabase);
            SqlDataReader myReader;

            myReader = cmdseq.ExecuteReader();
            DataTable dt = new DataTable();
            dt.Load(myReader);
            int MetaID = (int)(dt.Rows[0][0]);

            connDatabase.Close();


            List<String> columnData = new List<String>();

            using (SqlConnection connection = new SqlConnection("Server=localhost;Initial Catalog=MetaData;Integrated Security=SSPI;"))
            {
                connection.Open();
                string query = "select distinct SourceTable from metadata.dbo.BimlMetaTable";
                using (SqlCommand command = new SqlCommand(query, connection))
                {
                    using (SqlDataReader reader = command.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            columnData.Add(reader.GetString(0));
                        }
                    }
                }
            }

            if (columnData.Count == 0)
            {

                for (int i = 0; i < checkedListBox1.CheckedItems.Count; i++) //Indexing(counting) the numbers of checkeditems
                {


                    connDatabase.Open();
                    string query = "insert into dbo.BimlMetaTable (MetaID,SourceDB,SourceTable,DestinationDB,DestinationTable) values ('" + MetaID + "','" + cmb.Text + "',@sourcetable,'" + cmbdest.Text + "',@sourcetable)";
                    SqlCommand cmd = new SqlCommand(query, connDatabase);



                    cmd.Parameters.Add("@sourcetable", SqlDbType.NVarChar).Value = checkedListBox1.CheckedItems[i]; //Adding the selected items to parameter @check

                    cmd.ExecuteNonQuery();
                    connDatabase.Close();



                    MessageBox.Show(checkedListBox1.CheckedItems.Count + " : Tables has been added");
                    Form2 frm = new Form2(cmb.Text);
                    frm.Show();
                    //Closing the first form to go the next form
                    //this.Hide();
                    //var form2 = new Form2();
                    //form2.Closed += (Savelistboxbtn_Click, args) => this.Close();
                    //form2.Show();


                }
            }
            else
            {
               
                foreach (string s in columnData)
                {
                    //for (int iis = 0; iis < columnData.Count; iis++) // Loop through List with for
                    //{


                    if (s.Equals(checkedListBox1.CheckedItems) || s.Equals(null) || s.Equals(""))
                    {
                        MessageBox.Show(checkedListBox1.CheckedItems + " has already been added");
                    }


                    else
                    {

                        for (int i = 0; i < checkedListBox1.CheckedItems.Count; i++) //Indexing(counting) the numbers of checkeditems
                        {


                            connDatabase.Open();
                            string query = "insert into dbo.BimlMetaTable (MetaID,SourceDB,SourceTable,DestinationDB,DestinationTable) values ('" + MetaID + "','" + cmb.Text + "',@sourcetable,'" + cmbdest.Text + "',@sourcetable)";
                            SqlCommand cmd = new SqlCommand(query, connDatabase);



                            cmd.Parameters.Add("@sourcetable", SqlDbType.NVarChar).Value = checkedListBox1.CheckedItems[i]; //Adding the selected items to parameter @check

                            cmd.ExecuteNonQuery();
                            connDatabase.Close();



                            MessageBox.Show(checkedListBox1.CheckedItems.Count + " : Tables has been added");
                            Form2 frm = new Form2(cmb.Text);
                            frm.Show();
                            //Closing the first form to go the next form
                            //this.Hide();
                            //var form2 = new Form2();
                            //form2.Closed += (Savelistboxbtn_Click, args) => this.Close();
                            //form2.Show();


                        }
                    }
            }


         
            }
        }
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester