为什么它不插入sql表?

时间:2014-01-17 22:09:27

标签: c# sql insert

这是我插入表格的代码。它没有任何错误,但它没有插入表中。我也尝试使用stored_procedure但它也没有插入。我找不到我做错了什么。

private void btnSave_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection();
    con.ConnectionString = Properties.Settings.Default.bm_DatabaseConnectionString;
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = con;
    //cmd.CommandType = CommandType.StoredProcedure;
    cmd.CommandText = "INSERT INTO [tbl_Buildings] (buildingName,buildingImage,buildingAddress,floorNo,apartsNo, buildingDesc) VALUES (@builName,@builImage,@builAddr,@floorNo,@apartsNo,@builDesc)";//"prc_AddNewBuilding";
    cmd.Parameters.Add("@builName", txtBuildingName.Text);
    cmd.Parameters.Add("@builAddr", txtAddress.Text);
    cmd.Parameters.Add("@builImage", "Undefined");
    cmd.Parameters.Add("@floorNo", (int)numFloorNo.Value);
    cmd.Parameters.Add("@apartsNo", (int)numApartsNo.Value);
    cmd.Parameters.Add("@builDesc", txtBuilDesc.Text);
    try
    {
        con.Open();
        cmd.ExecuteNonQuery();
        MessageBox.Show("New building has been added successfully");
        this.Close(); 
    }
    catch (SqlException sqlex)
    {
        MessageBox.Show(sqlex.Message);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
    finally
    {
        con.Close();
    }
}

我正在使用VS2012。我能做错什么?

2 个答案:

答案 0 :(得分:0)

修改

我的原始答案假定SQL Server是数据库。事实证明,OP正在使用MS Access。似乎,基于其他证据,.mdb文件的文件路径是罪魁祸首,而不是C#或SQL。

我原来的回答:

使用连接字符串...

Server=myhost;Database=testdatatbase;Trusted_Connection=True;

您上面提供的代码有效。我去了SQL企业管理器,用以下属性创建了一个名为dbo.tbl_Buildings的表...

buildingName = nvarchar(50)
buildingImage = nvarchar(50)
buildingAddress = nvarchar(50)
floorNo = int
apartsNo = int
buildingDesc = nvarchar(50)

然后我传入了虚拟值,然后运行以下查询......

select * from testdatatbase.dbo.tbl_Buildings

它显示了记录......

- 似乎对我有用......

(也许检查一下您的数据类型 - 确保您的表类型与代码中的类型匹配)

答案 1 :(得分:0)

尝试使用:

Database.Command.Parameters.AddWithValue("@variableName", variable)

我唯一可以想象为什么你的值不会被插入到你的数据库中的是一个SQL异常。也许你错过了一些报价?

可以使用完整的“添加”声明,如下所示:

Database.Command.Parameters.Add(item, System.Data.SqlDbType.VarChar).Direction = ParameterDirection.Input

在这种情况下,项目是包含要存储的数据的变量