Проблема в обновлении записи c # - PullRequest
0 голосов
/ 14 декабря 2010

я не знаю, почему каждый раз, когда я выполняю обновление своей записи, запрос, из которого я обновляю, не увеличивает ID с 0 до 1, а всегда занимает 0 .. я не знаю, как мне увеличить мойидентификатор до 1 и до сих пор .. пожалуйста, объясните ..: / .. мой код:

private void btnUpdate_Click(object sender, EventArgs e)
            {
                int CustomerID =0;
                SqlConnection cn = new SqlConnection(@"Data Source=COMPAQ-PC-PC\SQLEXPRESS;
                Initial Catalog=Gym;Integrated Security=True");
                SqlCommand cmd  = new SqlCommand("Update Customer set Customer_Name = '" + tbName.Text + "',Cell_Number = '" + tbContactNumber.Text + "',Customer_Address = '" + tbAddress.Text + "' where CustomerID = " + CustomerID, cn);
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataTable dt = new DataTable();
                da.Fill(dt);
                BindGridView();
            }


private void BindGridView()
        {
            SqlConnection cn = new SqlConnection(@"Data Source=COMPAQ-PC-PC\SQLEXPRESS;Initial Catalog=Gym;Integrated Security=True");
            SqlCommand cmd = new SqlCommand("Select * from Customer", cn);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            dgView_CustomerInfo.DataSource = dt.DefaultView;
        }

Ответы [ 3 ]

2 голосов
/ 14 декабря 2010

Вам нужно использовать Command.ExecuteNonQuery() вместо.

0 голосов
/ 14 декабря 2010

Вам действительно нужно прочитать книгу о программировании .net.Ваш код полон глюков ...

Для начала ...

        // put the connection string into the app.config
        using (SqlConnection cn = new SqlConnection(@"Data Source=COMPAQ-PC-PC\SQLEXPRESS; Initial Catalog=Gym;Integrated Security=True"))
        {
            int result = new SqlCommand("Update Customer set Customer_Name = '" + tbName.Text + "',Cell_Number = '" + tbContactNumber.Text + "',Customer_Address = '" + tbAddress.Text + "' where CustomerID = " + CustomerID, cn).ExecuteNonQuery();
            // eval result to see wether there was realy an updated record...
        }

На SqlConnection используйте оператор using().Таким образом, об утилизации объекта заботятся.Фактически используйте его для всех одноразовых объектов.

Попробуйте использовать app.config / web.config для строки подключения.

Сбросьте весь пользовательский ввод, который идет на сервер sql, чтобы предотвратить внедрение sql,http://de.wikipedia.org/wiki/SQL-Injection

0 голосов
/ 14 декабря 2010

Вы используете предложение SQL Update.Это означает, что вы собираетесь обновить запись EXISTING, а не вставлять новую.

Идентификатор увеличивается только для новых записей, но не для существующих.Также убедитесь, что ваш столбец идентификаторов правильно настроен.В нем должно быть предложение IDENTITY (1,1), как в примере ниже:

CREATE TABLE [dbo].[td_Component](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Url] [nvarchar](250) NOT NULL,
    [Caption] [nvarchar](50) NOT NULL,
    [Description] [varchar](4000) NULL,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...