能够更新数据集但无法提交对数据库的更改

时间:2016-06-21 15:59:08

标签: c# sql-server database

尝试从数据集更新数据库时遇到了一些麻烦。

我正在使用Visual Studio 2015和SQL Server 2016,并创建WFA。

我正在创建一个简单的CRUD应用程序,但是当我尝试添加新记录或更新当前记录时,数据集会更新,但不会更新实际数据库。 我花了几个小时来完成我的代码(即使它只有大约350 LOC),我找不到问题。当我在插入处使用中断时,这是我可以检索的查询:

    --The data may be truncated and may not represent the query that was run on the server
--Database name is unknown.

--Type and value data was not available for the following variables. Their values have been set to defaults.
DECLARE @p1 AS SQL_VARIANT;
DECLARE @p2 AS SQL_VARIANT;
DECLARE @p3 AS SQL_VARIANT;
DECLARE @p4 AS SQL_VARIANT;
DECLARE @p5 AS SQL_VARIANT;
SET @p1 = NULL;
SET @p2 = NULL;
SET @p3 = NULL;
SET @p4 = NULL;
SET @p5 = NULL;

INSERT INTO [dbo].[tbl_Players] ([player_name], [player_surname], [player_fine], [player_team_id], [player_position_id]) VALUES (@p1, @p2, @p3, @p4, @p5)

任何想法都是为什么它保持空白,因为我还没有弄清楚是什么,在我看来它应该工作,因为数据集记得数据,我只是试图从数据集更新数据库。

这是我的数据库连接类中应该更新数据库的代码的一部分:

        public void UpdateDatabase(System.Data.DataSet ds)
    {
        System.Data.SqlClient.SqlCommandBuilder cb = new System.Data.SqlClient.SqlCommandBuilder(da_0);
        cb.DataAdapter.Update(ds.Tables[0]);
    }

以下是更新数据集的部分:

private void button_Save_Click(object sender, EventArgs e)
{


    Doub = convertToDouble(textBox_Fined);
    IntCBTeam = convertToInt(textBox_TeamId);
    IntCBPosition = convertToInt(textBox_PositionId);


    DataRow row = ds.Tables[0].NewRow();

    row[1] = textBox_FirstName.Text;
    row[2] = textBox_Surname.Text;
    row[3] = Doub;
    row[4] = IntCBTeam;
    row[5] = IntCBPosition;

    ds.Tables[0].Rows.Add(row);

    try
    {
        DBAccess.UpdateDatabase(ds);
        MaxRows = MaxRows + 1;
        inc = MaxRows - 1;

        MessageBox.Show("Succesfully saved record");


    }
    catch (Exception err)
    {

        MessageBox.Show(err.Message);

    }

    button_Cancel.Enabled = false;
    button_Save.Enabled = false;
    button_New.Enabled = true;
}

按下保存按钮回复Messagebox.Show("Succesfully saved record")这让我相信与数据库的连接没问题,但我可能错了。这是我遗憾地缺乏经验的地方。 希望你们其中一个人能发现我的错误。

如果有任何不明之处,请向我询问我无意中遗漏的更多信息。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

问题是属性设置中自动生成的连接字符串。我不得不将“Data Source = | DataDirectory | \ DBOne.mdf”[DataDirectory]替换为实际位置“C:\...\DBOne.mdf”以使其正常工作。