我必須設計一個應用程序,讓用戶提供問題列表的答案。如何在SQL中保存答案?
下面是SQL表結構
問題 - 表,其中列出的問題
評級 - 表擁有評分
的答案,表存儲了名震問題的答案。
,我需要的是,如何保存答案(等級ID和問題ID)
在超過100個問題的表邏輯..
我是否需要產生循環或我可以保存過程中使用逗號分隔符?
有沒有解決方法?
我必須設計一個應用程序,讓用戶提供問題列表的答案。如何在SQL中保存答案?
下面是SQL表結構
問題 - 表,其中列出的問題
評級 - 表擁有評分
的答案,表存儲了名震問題的答案。
,我需要的是,如何保存答案(等級ID和問題ID)
在超過100個問題的表邏輯..
我是否需要產生循環或我可以保存過程中使用逗號分隔符?
有沒有解決方法?
我希望我能理解你的問題。我會建議你用一些獨特的PK將問題保存在一張表中。然後將QuestionId(前面提到的PK)的答案(在它自己的表格中)保存爲外鍵(FK)。我猜你是評分答案soi保存評級並將它們添加到AnswerId(PK來自Answers Table)以及一些特定領域的屬性,如(UserName,Rating,...)。
現在我不知道您使用的ORM或SQL訪問平臺。但循環通常不會(交易等)。我建議你將XML結構發送到SAVE過程,如果你正在使用存儲過程或類似的過程。當你點擊gui存儲答案時,你可以有一些臨時表,並保存你只需將數據從臨時「移動」到「真實」存儲。有很多方法,但你沒有提到你的環境。
Milos我們正在使用.Net和SQL Server .. –
將多個記錄從.Net保存到SQL Server表的最好方法是使用表值參數。
首先,您需要在SQL Server中創建用戶定義的表類型(UDT
):
CREATE TYPE UDT_UserAnswers AS TABLE
(
UserAnswers_UserId int,
UserAnswers_QuestionId int,
UserAnswers_RatingId int
)
其次,你需要編寫程序來接受這個UDT
:
CREATE PROCEDURE tblAnswers_Insert
(
@UserAnswers AS dbo.UDT_UserAnswers READONLY -- Must be readonly!
)
AS
INSERT INTO Answers(UserId, QuestionId, RatingId)
SELECT UserAnswers_UserId, UserAnswers_QuestionId, UserAnswers_RatingId
FROM @UserAnswers
GO
最後,.Net代碼(使用ado.net):
// create a data table
DataTable dt = new DataTable();
dt.Columns.Add("UserAnswers_UserId", typeof(Int32));
dt.Columns.Add("UserAnswers_QuestionId", typeof(Int32));
dt.Columns.Add("UserAnswers_RatingId", typeof(Int32));
// Populate the data table here
// execute the stored procedure
using(SqlConnection con = new SqlConnection("<yourConnectionStringHere>")
{
SqlCommand cmd = new SqlCommand("tblAnswers_Insert", con);
cmd.Parameters.Add("@UserAnswers", SqlDbType.Structured).Value = dt;
cmd.ExecuteNonQuery();
}
你應該真的描述你的問題更好,你到目前爲止嘗試過/你的代碼是 –
問題是如何在sql中保存100個問題的答案? 如何以簡單的方式保存而不會循環? 有沒有邏輯? –
因此,您可以保存99個答案,但不是100個?那裏有什麼問題? –