2011-01-09 47 views
0

編輯
看來用戶必須輸入他的個人資料的一些數據,否則我會得到下面的錯誤。我猜如果沒有配置文件數據,用戶默認不能繼續在其他表中輸入數據?我不想讓輸入的用戶配置文件數據成爲使用其餘網站功能的要求,我該如何解決這個問題?爲什麼用戶必須輸入「Profile」數據才能將數據輸入到其他表格中?

EDIT 2
OK,我會嘗試:​​然而,我的表沒有一個外鍵列....?

(註釋 - Ref1Ref2

原題:


目前我一直在測試都使用相同的用戶和一切都已經正常工作。

但是,當我第一次創建一個新用戶並試圖輸入數據到我的自定義表中時,出現以下錯誤。

不知道爲什麼我得到這個錯誤。我有ASP.NET 3.5中設置的用戶控件,但是我使用的是我自己的表或者至少我知道的。

我有一個自定義UserData表,其中包括列:

id, UserProfileID, CL, LL, SL, DateTime 

(id是自動遞增INT)的目的是使所有用戶都將在此表中添加自己的數據和我上面提到的有一直在爲我創建的原始第一個用戶正常工作。但是,當我創建一個新用戶時,我遇到了這個問題。

以下是更新數據庫的代碼。

protected void Button1_Click(object sender, EventArgs e) 
    { 

     //connect to database 
     MySqlConnection database = new MySqlConnection(); 
     database.CreateConn(); 

     //create command object 
     Command = new SqlCommand(queryString, database.Connection); 

     //add parameters. used to prevent sql injection 
     Command.Parameters.Add("@UID", SqlDbType.UniqueIdentifier); 
     Command.Parameters["@UID"].Value = Membership.GetUser().ProviderUserKey; 

     Command.Parameters.Add("@CL", SqlDbType.Int); 
     Command.Parameters["@CL"].Value = InCL.Text; 

     Command.Parameters.Add("@LL", SqlDbType.Int); 
     Command.Parameters["@LL"].Value = InLL.Text; 

     Command.Parameters.Add("@SL", SqlDbType.Int); 
     Command.Parameters["@SL"].Value = InSL.Text; 

     Command.ExecuteNonQuery(); 
    } 

源錯誤:

Line 84:
Command.ExecuteNonQuery();

回答

1

聽起來就像在UserData和Profile表之間有一個外鍵約束。如果asp_Profile中沒有記錄的用戶標識值等於UserData表中新記錄中的UserProfileID,則會出現此錯誤。不知道你的目標是什麼,但聽起來你應該刪除FK_UserData_aspnet_Profile約束,然後使UserData.UserProfileID爲空,因爲在你的UserData表中不會有與之對應的配置文件中的記錄。

+0

任何線索如何擺脫FK_UserData_aspnet_Profile約束? – 2011-01-20 20:00:23

1

製作UserProfileID可空,並通過爲DBNull到UID參數,如果用戶沒有輸入數據。

+0

達維塔,我想我明白了第二部分,但如何使「UserProfileID」爲空的幫助呢?對於數據,只要輸入數據,我總是需要輸入「UserProfileID」。 – 2011-01-09 01:27:48

1

這意味着您試圖輸入到UserProfileID列的值不存在於UserID列中的Profile表的任何行中。

也許ProviderUserKey不是你應該在這裏使用的。

0

這照顧了它 -

ALTER TABLE UserData 
    DROP CONSTRAINT FK_UserData_aspnet_Profile; 
相關問題