gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 20:52:18 26 4
gpt4 key购买 nike

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

我将 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("Successfully saved record") 这让我相信与数据库的连接没问题,但我可能错了。可悲的是,这是我缺乏经验的地方。希望你们中的一个能发现我的错误。

如果有任何不清楚的地方,请务必向我询问我无意中遗漏的更多信息。

最佳答案

我找到了解决方案。

问题出在属性设置中自动生成的连接字符串。我必须将“Data Source=|DataDirectory|\DBOne.mdf”[DataDirectory] 替换为实际位置“C:\...\DBOne.mdf”使其发挥作用。

关于c# - 能够更新数据集但无法提交对数据库的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37949272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com