数据集保存更改
DataSet Saving Changes
我有一个 Visual Studio C# Forms 项目。在那个项目中是 SmartCon.mdf。正如您在下面看到的,数据集已创建。
由于某种原因,数据未保存。当我将玩家添加到数据集时,我的代码如下。
SmartConDataSet.PlayersRow newPlayer = myData.Players.NewPlayersRow();
newPlayer.Id = Guid.NewGuid().ToString();
newPlayer.Guid = newGuid;
newPlayer.FirstSeen = DateTime.Now;
newPlayer.Kills = 0;
newPlayer.Deaths = 0;
newPlayer.TotalScore = 0;
myData.Players.AddPlayersRow(newPlayer);
SmartConDataSet.NamesRow newName = myData.Names.NewNamesRow();
newName.Id = Guid.NewGuid().ToString();
newName.Name = Name;
newName.PlayerId = newPlayer.Guid;
newName.Active = 1;
myData.Names.AddNamesRow(newName);
//Update the database
myData.AcceptChanges();
为什么我的数据没有保存到数据库中?
更新:
我可以确认数据正在添加到数据集中,但没有传输到数据库。
更新 2:我可能需要数据库的连接字符串????
更新 3:
var playerTableAdapter = new SmartConDataSetTableAdapters.PlayersTableAdapter();
SmartConDataSet.PlayersRow newPlayer = myData.Players.NewPlayersRow();
newPlayer.Id = Guid.NewGuid().ToString();
newPlayer.Guid = newGuid;
newPlayer.FirstSeen = DateTime.Now;
newPlayer.Kills = 0;
newPlayer.Deaths = 0;
newPlayer.TotalScore = 0;
playerTableAdapter.Insert(newPlayer.Guid, newPlayer.Kills, newPlayer.Deaths, newPlayer.Id, newPlayer.FirstSeen, newPlayer.FirstSeen, 0);
//Add the players name to the name table
var namesTableAdapter = new SmartConDataSetTableAdapters.NamesTableAdapter();
SmartConDataSet.NamesRow newName = myData.Names.NewNamesRow();
newName.Id = Guid.NewGuid().ToString();
newName.Name = Name;
newName.PlayerId = newPlayer.Id;
newName.Active = 1;
var result = namesTableAdapter.Insert(newName.Id, newName.PlayerId, newName.Name, 1);
根据我的研究,DataSet 不能直接对数据库进行更改。看到这个线程...
Does instantiating a DataSet object automatically create a connection to a SQL service-based database for CRUD operations?
但是我的数据库仍然没有更新新行。
更新 4:
根据更新 3 中的 link,连接字符串也是错误的。一切正常,但是,我的连接字符串现在是我计算机上的路径,而不是相对路径。如果我把它放在其他人的计算机上,它将无法工作,因为他们的文件路径将与我的不同。
数据库不是使用这些方法更新的。你需要使用 TableAdapter.Insert 更新等
我有一个 Visual Studio C# Forms 项目。在那个项目中是 SmartCon.mdf。正如您在下面看到的,数据集已创建。
由于某种原因,数据未保存。当我将玩家添加到数据集时,我的代码如下。
SmartConDataSet.PlayersRow newPlayer = myData.Players.NewPlayersRow();
newPlayer.Id = Guid.NewGuid().ToString();
newPlayer.Guid = newGuid;
newPlayer.FirstSeen = DateTime.Now;
newPlayer.Kills = 0;
newPlayer.Deaths = 0;
newPlayer.TotalScore = 0;
myData.Players.AddPlayersRow(newPlayer);
SmartConDataSet.NamesRow newName = myData.Names.NewNamesRow();
newName.Id = Guid.NewGuid().ToString();
newName.Name = Name;
newName.PlayerId = newPlayer.Guid;
newName.Active = 1;
myData.Names.AddNamesRow(newName);
//Update the database
myData.AcceptChanges();
为什么我的数据没有保存到数据库中?
更新: 我可以确认数据正在添加到数据集中,但没有传输到数据库。
更新 2:我可能需要数据库的连接字符串????
更新 3:
var playerTableAdapter = new SmartConDataSetTableAdapters.PlayersTableAdapter();
SmartConDataSet.PlayersRow newPlayer = myData.Players.NewPlayersRow();
newPlayer.Id = Guid.NewGuid().ToString();
newPlayer.Guid = newGuid;
newPlayer.FirstSeen = DateTime.Now;
newPlayer.Kills = 0;
newPlayer.Deaths = 0;
newPlayer.TotalScore = 0;
playerTableAdapter.Insert(newPlayer.Guid, newPlayer.Kills, newPlayer.Deaths, newPlayer.Id, newPlayer.FirstSeen, newPlayer.FirstSeen, 0);
//Add the players name to the name table
var namesTableAdapter = new SmartConDataSetTableAdapters.NamesTableAdapter();
SmartConDataSet.NamesRow newName = myData.Names.NewNamesRow();
newName.Id = Guid.NewGuid().ToString();
newName.Name = Name;
newName.PlayerId = newPlayer.Id;
newName.Active = 1;
var result = namesTableAdapter.Insert(newName.Id, newName.PlayerId, newName.Name, 1);
根据我的研究,DataSet 不能直接对数据库进行更改。看到这个线程...
Does instantiating a DataSet object automatically create a connection to a SQL service-based database for CRUD operations?
但是我的数据库仍然没有更新新行。
更新 4: 根据更新 3 中的 link,连接字符串也是错误的。一切正常,但是,我的连接字符串现在是我计算机上的路径,而不是相对路径。如果我把它放在其他人的计算机上,它将无法工作,因为他们的文件路径将与我的不同。
数据库不是使用这些方法更新的。你需要使用 TableAdapter.Insert 更新等