繁体   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