c# - 数据类型从int转换为string时发生错误

标签 c# asp.net sql-server-2008

 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 是主键约束和其他表的外键。现在,当我要执行代码时。它给出了图像 Error in the code 中显示的错误。

最佳答案

不要使用字符串连接创建 CommandText - 这种不好的做法会使您的 sql 查询容易受到 sql 注入(inject)的攻击。 您也可以将 SqlParameter 用于“选择”查询,如下所示。

cmd.CommandText = "select * from Personal_det where FID=@fid";
...
cmd.Parameters.Add(new SqlParameter("@fid", fidValue))

关于c# - 数据类型从int转换为string时发生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18798552/

相关文章:

c# - 从 ASP.NET MVC 路由生成 URL

javascript - 我的 JS 函数如何限制特定数据?

具有多个 X 轴列的 SQL Server PIVOT

c# - Visual Studio - 引用第三方 DLL

c# - 在 ubuntu 16.04 上安装 "monodevelop"IDE 后找不到 asp.net 模板

sql-server-2008 - 如何在ssis脚本任务中显示变量

sql - 跳过/忽略/不插入重复行

c# - PHP 准备的语句 - 无法选择 Varchar 行,选择数字行没有问题

c# - 将c#的datetimepicker值存储到mysql数据库中

c# - 脚手架项目的包恢复失败问题