更新记录c#中的问题

时间:2010-12-14 08:44:18

标签: c# sql

我不知道为什么每次我执行我的记录更新时,我更新的查询不会将ID从0递增到1并且总是需要0 ..我不知道如何递增我的id到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 个答案:

答案 0 :(得分:2)

您需要改为使用Command.ExecuteNonQuery()

答案 1 :(得分:0)

您正在使用“更新客户”sql子句。 这意味着您将更新现有记录,而不是插入新记录。

ID仅针对NEW记录递增,但不会针对现有记录递增。 另外,请确保正确配置了ID列。 它应该具有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,

答案 2 :(得分:0)

你真的需要阅读一本关于.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 server的所有用户输入以防止sql-injection。 http://de.wikipedia.org/wiki/SQL-Injection