protected void Button1_Click(object sender, EventArgs e)
{
SqlConnection cn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
SqlDataAdapter da1 = new SqlDataAdapter();
DataSet ds1 = new DataSet();
cn.ConnectionString = @"Data Source=BOPSERVER;Initial Catalog=Project;Integrated Security=True";
cn.Open();
string n = Convert.ToString(txtfid.Text);
cmd.CommandText = "select * from Personal_det where FID=" + n + "";
cmd.CommandType = CommandType.Text;
cmd.Connection = cn;
da1.SelectCommand = cmd;
da1.Fill(ds1, "Personal_det");
double dn = ds1.Tables["Personal_det"].Rows.Count;
if (dn == 0)
{
DateTime sdt = DateTime.Today;
SqlCommand cmd3 = new SqlCommand();
cn.Close();
cn.Open();
cmd3.CommandText = "insert into Personal_det(FID,Name,DOB,MobileNo,EmailId,add1,add2,add3,Pincode) values(@FID,@Name,@DOB,@MobileNo,@EmailId,@add1,@add2,@add3,@Pincode)";
cmd3.CommandType = CommandType.Text;
cmd3.Connection = cn;
cmd3.Parameters.Add("@FID", SqlDbType.VarChar,50);
cmd3.Parameters["@FID"].Value = this.txtfid.Text;
cmd3.Parameters.Add("@Name", SqlDbType.VarChar, 50);
cmd3.Parameters["@Name"].Value = this.txtname.Text;
cmd3.Parameters.Add("@DOB", SqlDbType.DateTime, 8);
cmd3.Parameters["@DOB"].Value = Convert.ToDateTime(this.txtdob.Text);
cmd3.Parameters.Add("@MobileNo", SqlDbType.Decimal, 18);
cmd3.Parameters["@MobileNo"].Value = this.txtmbl.Text;
cmd3.Parameters.Add("@EmailId", SqlDbType.VarChar, 50);
cmd3.Parameters["@EmailId"].Value = this.txtmail.Text;
cmd3.Parameters.Add("@add1", SqlDbType.VarChar, 50);
cmd3.Parameters["@add1"].Value = this.txtadd1.Text;
cmd3.Parameters.Add("@add2", SqlDbType.VarChar, 50);
cmd3.Parameters["@add2"].Value = this.txtadd2.Text;
cmd3.Parameters.Add("@add3", SqlDbType.VarChar, 50);
cmd3.Parameters["@add3"].Value = this.txtadd3.Text;
cmd3.Parameters.Add("@Pincode", SqlDbType.Decimal, 18);
cmd3.Parameters["@Pincode"].Value = this.txtpin.Text;
cmd3.ExecuteNonQuery();
cn.Close();
这是我的C#代码。实际上我所做的是以前我有FID作为int现在我把它转换为varchar(50),因为有些需要,我已经改变了sql中的数据类型.Personal_det是表FID是主键约束的表和其他表的foriegn键。现在当我要执行代码时..它给出了图像中显示的错误
答案 0 :(得分:2)
不要使用字符串连接创建CommandText - 这种不好的做法会使您的sql查询容易受到sql注入攻击。 您也可以将SqlParameter用于“选择”查询,如下所示。
cmd.CommandText = "select * from Personal_det where FID=@fid";
...
cmd.Parameters.Add(new SqlParameter("@fid", fidValue))
答案 1 :(得分:1)
由于FID
是字符串,您需要使用''
,如下所示
cmd.CommandText = "select * from Personal_det where FID='" + n + "'";
以上将避免您的例外,但它不安全
您需要使用与第二种情况相同的参数