C#数据库参数化的各种写法,注意陷阱,使用推荐方法

        private void btnDelete_Click(object sender, EventArgs e)
        {
            //只演示一个单行删除
            if (this.dataGridView1.SelectedRows.Count<=0)
            {
                return;
            }
            if (MessageBox.Show("真的要删除吗?", "提示", MessageBoxButtons.YesNo) != DialogResult.Yes)
            {
                return;
            }
            int Id = int.Parse(this.dataGridView1.SelectedRows[0].Cells["Id"].Value.ToString());
            string connStr = SqlHelper.GetConnectionString();
            using (SqlConnection conn=new SqlConnection(connStr))
            {
                using (SqlCommand cmd=conn.CreateCommand())
                {
                    conn.Open();
                    cmd.CommandText = "update UserInfo set DelFlag=0 where Id=@Id";// "delete from UserInfo where Id=@Id";
                    //cmd.Parameters.AddWithValue("@Id", Id);//方法(一) 推荐******
                    //SqlParameter para = new SqlParameter();//方法(二) 上面一行等于下面这四行 推荐******给属性赋值方式
                    //para.Value = Id;
                    //para.ParameterName = "@Id";
                    //cmd.Parameters.Add(para);
                    //SqlParameter para3 = new SqlParameter("@Id", Id);//方法(三) 有参数陷阱 如果给具体值时 会匹配类型枚举
                    //cmd.Parameters.Add(para3);
                    //cmd.Parameters.Add(new SqlParameter("@Id", Id));//方法四 上2行合这一行
                    //SqlParameter para4 = cmd.CreateParameter();//方法五 相当于上面的new
                    //para4.ParameterName = "@Id";
                    //para4.Value = Id;
                    //cmd.Parameters.Add(para4);
                    //SqlParameter para5 = new SqlParameter("@Id", SqlDbType.Int);//方法(六)
                    //para5.Value = Id;
                    //cmd.Parameters.Add(para5);
                    SqlParameter para6= cmd.Parameters.Add("@Id", SqlDbType.Int);//方法七
                    para6.Value = Id;
                    if (cmd.ExecuteNonQuery()>0)
                    {
                        MessageBox.Show("delete ok...");
                    }
                    LoadUserInfo();
                }
            }

        }

 

posted @ 2025-11-30 15:37  techNote  阅读(2)  评论(0)    收藏  举报