Адаптировать начинающий C # SQL Server INSERT для работы с моей базой данных - PullRequest
0 голосов
/ 22 ноября 2011

Я прочитал МНОЖЕСТВО учебных пособий, статей и всего, что касается моей проблемы, и, честно говоря, из-за недостатка опыта я не могу крутить пальцы вокруг этого, поэтому я надеюсь, что некоторые из вас, ребята, могут мне помочь:) *

Я работаю над проектом (просто чтобы научиться программировать, поэтому он, вероятно, очень прост), но у меня есть эта страница "Новости", где я могу обновлять и удалять данные, используя GridView.

Теперь я хотел бы вставить кое-что в мою базу данных, используя 3 текстовых поля и 1 кнопку отправки.

У меня есть 3 строки, которые нужно вставить:

  1. Заголовок
  2. Дата
  3. Контент / сама новость.

которые хранятся в NyhedTB из строки подключения: BoligStjernenConnectionString

Мой запрос выглядит так:

INSERT INTO [NyhedTB] ([NyhedDato], [NyhedTitel], [NyhedTekst])
VALUES (@NyhedDato, @NyhedTitel, @NyhedTekst)

Я прочитал в интернете, что этот код должен творить чудеса для меня (мне придется вставить свои собственные значения c.):

static void Insert()
{
    try
    {
        string connectionString =
            "server=.;" +
            "initial catalog=employee;" +
            "user id=sa;" +
            "password=sa123";
        using (SqlConnection conn =
            new SqlConnection(connectionString))
        {
            conn.Open();
            using (SqlCommand cmd =
                new SqlCommand("INSERT INTO EmployeeDetails VALUES(" +
                    "@Id, @Name, @Address)", conn))
            {
                cmd.Parameters.AddWithValue("@Id", 1);
                cmd.Parameters.AddWithValue("@Name", "Amal Hashim");
                cmd.Parameters.AddWithValue("@Address", "Bangalore");

                int rows = cmd.ExecuteNonQuery();

                //rows number of record got inserted
            }
        }
    }
    catch (SqlException ex)
    {
        //Log exception
        //Display Error message
    }
}

Я посмотрел на этот код и подумал, что он должен быть достаточно легким, но на самом деле я не могу понять его.

Ответы [ 4 ]

1 голос
/ 28 августа 2012
protected void GvManualShows_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        //label lbl = (label)e.Row.FindControl("lblHidden");
        if (e.Row.Cells[14].Text == "Y")
        {
            // CheckBox cb = (CheckBox)e.Row.FindControl("chk");

            CheckBox chk = (CheckBox)e.Row.Cells[0].FindControl("chkBox");
            chk.Checked = true;

        }
    }
}
1 голос
/ 22 ноября 2011

Вот несколько советов для начала, изучение программирования - это много проб и ошибок.

  1. Начните с базового, буквально поместите три текстовых поля наФорма / страница и кнопка.

  2. Дважды щелкните кнопку, чтобы перейти к выделенному коду и просмотреть событие нажатия кнопки.

  3. Вставьте текст кода, включенного в ваш вопрос (все в try-catch).

  4. Поставьте точку останова на строке кода Public Void Button_Click и нажмите F11 для перехода по коду.

"одна вещь заключается в том, чтобы работать с выделенным кодом, но то, как заставить работать кнопки и текстовые поля, по-прежнему оставляет желать лучшего »*

Поместите текстовое поле в качестве значения, а не в жестко заданные значения:

cmd.Parameters.AddWithValue ("@ Address", textBox1.Text);

Вы также не должны вставлять значение Id, вместо этого измените таблицу EmployeeDetails и задайте для столбца ID в наборе свойств Identity Specification (IS Identity) = True.Затем щелкните правой кнопкой мыши столбец идентификатора и установите первичный ключ.

Публикуйте любые сообщения об ошибках, с которыми вы здесь сталкиваетесь, и когда вы все же добьетесь, чтобы это заработало, дополнительное упражнение (которое будет очень полезно для вас) будет использовать хранимую процедуру базы данных, а не специальный SQL, для безопасногоЗащита от атак SQL-инъекций.

Я предполагаю, что у вас установлен SQL Server и имеется база данных сотрудников с таблицей EmployeeDetails.

0 голосов
/ 22 ноября 2011

Я изменил пример кода с вашими требованиями и добавил комментарии, надеюсь, вам будет немного понятнее понять, что происходит:

static void Insert()
{
    try
    {
        string connectionString =
        "server=.;" +
        "initial catalog=MyDatabaseName;" + //here you write database name where your NyhedTB table is
        "user id=sa;" + //user name to connect to database
        "password=sa123"; //password
        using (SqlConnection conn = new SqlConnection(connectionString))
        {
            conn.Open();
            using (SqlCommand cmd =
              new SqlCommand("INSERT INTO NyhedTB (NyhedDato, NyhedTitel, NyhedTekst) VALUES (@NyhedDato, @NyhedTitel, @NyhedTekst)", conn))
            {
                //all "things" in your sql command what beggins with @ 
                //means that it is parameter and you need to pass values for these parameters: 
                //For @NyhedDato parameter you set text from your textbox
                cmd.Parameters.AddWithValue("@NyhedDato", txtDate.Text);

                //For @NyhedTitel parameter you set text from title textbox
                cmd.Parameters.AddWithValue("@NyhedTitel", txtTitle.Text);

                //For @NyhedTekst parameter you set text from content textbox
                cmd.Parameters.AddWithValue("@NyhedTekst", txtContent.Text);

                //Execute insert command and get how many records was efected, in this case it should be rows = 1 because you inserting just one record
                int rows = cmd.ExecuteNonQuery();
            }
        }
    }
    catch (SqlException ex)
    {
       //Log exception
       //Display Error message
    }
}

P.s. код не проверен. И когда вы говорите

У меня есть 3 строки, которые нужно вставить: Заголовок Дата Контент / сама новость.

на самом деле вы хотите вставить record с fields

0 голосов
/ 22 ноября 2011

Это довольно просто.Вам просто нужно изменить строку подключения, запрос и его параметры:

private void button1_Click(object sender, EventArgs e)
{
    try
    {
        string connectionString =
            "server=SQLServer;" +         // SQLServer is your SQL server machine
            "initial catalog=employee;" + // employee is your database
            "user id=sa;" +               // sa is the login to connect the database
            "password=sa123";             // sa123 is the password of the login
        using (SqlConnection conn =
            new SqlConnection(connectionString))
        {
            conn.Open();
            using (SqlCommand cmd = new SqlCommand(
                "INSERT INTO [NyhedTB] ([NyhedDato], [NyhedTitel], [NyhedTekst]) " +
                "VALUES (@NyhedDato, @NyhedTitel, @NyhedTekst)", conn))
            {
                cmd.Parameters.AddWithValue("@NyhedDato", textBoxDate.Text);
                cmd.Parameters.AddWithValue("@NyhedTitel", textBoxTitle.Text);
                cmd.Parameters.AddWithValue("@NyhedTekst", textBoxBody.Text);

                int rows = cmd.ExecuteNonQuery();  // Inserted rows number
            }
        }
    }
    catch (SqlException ex)
    {
        //Log exception
        //Display Error message
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...