2016-06-21 104 views
2

我嘗試從數據集更新數據庫時遇到一些麻煩。能夠更新數據集但無法將更改提交到數據庫

我正在使用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")這導致我相信與數據庫的連接沒問題,但我可能是錯的。這是我不幸遭遇的經歷。 希望你們中的一個能夠發現我的錯誤。

請問,如果有什麼不清楚的地方,請問我無意中遺漏的更多信息。

回答

0

我找到了解決方案。

問題是屬性設置中自動生成的連接字符串。我必須將「Data Source = | DataDirectory | \ DBOne.mdf」[DataDirectory]替換爲實際位置「C:\...\DBOne.mdf」才能使其正常工作。