我尝试从数据集更新数据库时遇到一些麻烦。能够更新数据集但无法将更改提交到数据库
我正在使用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;
}
Save按钮回复Messagebox.Show("Succesfully saved record")
这导致我相信与数据库的连接没问题,但我可能是错的。这是我不幸遭遇的经历。 希望你们中的一个能够发现我的错误。
请问,如果有什么不清楚的地方,请问我无意中遗漏的更多信息。