簡體   English   中英

將DropDownList值插入表

[英]Inserting DropDownList value to table

我有一個帶有兩個int列的數據庫表:GameID和GenreID,其中GameID是標識列。 我想使用ASP.NET和C#將我的DropDownList中的SelectedValue作為GenreID插入表中。 我在DropDownList中的所有ListItem看起來都像這樣:

<asp:ListItem Text="Action" Value="1"></asp:ListItem>

所以,這就是我想要做的。

將DropDownList值轉換為int:

int GenreID = Int32.Parse(DropDownGenre.SelectedValue);

SQL命令:

SqlCommand cmd2 = new SqlCommand("INSERT into Games_Genres values(@GenreID)");

並將該值添加到參數中:

cmd2.Parameters.AddWithValue("@GenreID", SqlDbType.Int).Value = GenreID;

這給了我以下錯誤:

字符串或二進制數據將被截斷。 該語句已終止。

我知道這個錯誤通常(總是?)意味着該字段的大小不足以容納我要插入的數據。 但是,看到我將值轉換為int,我不明白為什么這是一個問題?

你能試一下嗎

cmd2.Parameters.Add("@GenreID", SqlDbType.Int); cmd2.Parameters["@GenreID"].Value = GenreID;

代替?

你能試一下嗎

SqlCommand cmd2 = 
      new SqlCommand("INSERT into Games_Genres (GenreID) values(@GenreID)");

GenreID是否也設置為標識列?

同樣,在為查詢創建參數時,您無需指定類型,因為T-SQL隱式轉換類型。 它應該看起來像:

using (SqlCommand cmd2 = new SqlCommand("INSERT into Games_Genres (GenreID) values (@GenreID)"))
{
    cmd2.Parameters.AddWithValue("@GenreID", GenreID);
    cmd2.ExecuteScalar();
}

我還不能添加注釋,因此,您的架構圖像將GameId顯示為其一個關鍵字段,並且您未設置它,如果您對它添加了參數,也可能會創建一個存儲過程而不是文本查詢(如果僅用於測試)目的為何不嘗試:

var sqlCommand = new SqlCommand(String.Format("INSERT into Games_Genres values({0})", genreId));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM