帮忙!相同的代码怎么不能运行呢?

flew 2003-08-10 01:34:54
string strconn=ConfigurationSettings.AppSettings["strconn"];
SqlConnection myconn=new SqlConnection(strconn);
string insertquery="Insert into Article1(BoardID,BoardName,SubjectID,SubjectName,Title,Author) values(@BoardID,@BoardName,@SubjectId,@SubjectName,@Title,@Author)";
SqlCommand mycomm=new SqlCommand(insertquery,myconn);
mycomm.Parameters.Add(new SqlParameter("@BoardID", SqlDbType.Int, 4));
mycomm.Parameters["@BoardID"].Value=DropDownList1.SelectedValue;

mycomm.Parameters.Add(new SqlParameter("@BoardName", SqlDbType.Char, 10));
mycomm.Parameters["@BoardName"].Value=DropDownList1.SelectedItem.Text;

mycomm.Parameters.Add(new SqlParameter("@SubjectID", SqlDbType.Int, 4));
mycomm.Parameters["@SubjectID"].Value=DropDownList2.SelectedValue;

mycomm.Parameters.Add(new SqlParameter("@SubjectName", SqlDbType.Char, 10));
mycomm.Parameters["@SubjectName"].Value=DropDownList2.SelectedItem;

mycomm.Parameters.Add(new SqlParameter("@Title", SqlDbType.NVarChar, 50));
mycomm.Parameters["@Title"].Value=TextBox1.Text;

mycomm.Parameters.Add(new SqlParameter("@Author", SqlDbType.Char, 10));
mycomm.Parameters["@Author"].Value=TextBox2.Text;


// string strconn=ConfigurationSettings.AppSettings["strconn"];//news数据库
// SqlConnection myConnection=new SqlConnection(strconn);
// string strcom="insert into Article1(BoardID,BoardName,SubjectID,SubjectName,Title,Author) values(@BoardID,@BoardName,@SubjectID,@SubjectName,@Title,@Author)";
// SqlCommand myCommand = new SqlCommand(strcom, myConnection);
// myCommand.Parameters.Add(new SqlParameter("@BoardID", SqlDbType.Int, 4));
// myCommand.Parameters["@BoardID"].Value=DropDownList1.SelectedValue;
//
// myCommand.Parameters.Add(new SqlParameter("@BoardName", SqlDbType.Char, 10));
// myCommand.Parameters["@BoardName"].Value=DropDownList1.SelectedItem.Text;
//
// myCommand.Parameters.Add(new SqlParameter("@SubjectID", SqlDbType.Int, 4));
// myCommand.Parameters["@SubjectID"].Value=DropDownList2.SelectedValue.ToString();
//
// myCommand.Parameters.Add(new SqlParameter("@SubjectName", SqlDbType.Char, 10));
// myCommand.Parameters["@SubjectName"].Value=DropDownList2.SelectedValue.ToString();
//
// myCommand.Parameters.Add(new SqlParameter("@Title", SqlDbType.NVarChar, 50));
// myCommand.Parameters["@Title"].Value=TextBox1.Text;
//
// myCommand.Parameters.Add(new SqlParameter("@Author", SqlDbType.Char, 10));
// myCommand.Parameters["@Author"].Value=TextBox2.Text;


myconn.Open();
mycomm.ExecuteNonQuery();
myconn.Close();

怎么我用第一种就报错呢?用屏蔽的就可以呢?报错信息是
“/WebApplication1”应用程序中的服务器错误。
--------------------------------------------------------------------------------

对象必须实现 IConvertible。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.InvalidCastException: 对象必须实现 IConvertible。

源错误:


行 119:
行 120: myconn.Open();
行 121: mycomm.ExecuteNonQuery();
行 122: myconn.Close();
行 123:

...全文
125 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
flew 2003-08-10
  • 打赏
  • 举报
回复
解决了是SubjectName的字段太短了。多谢
panyee 2003-08-10
  • 打赏
  • 举报
回复
把数据库的字段调长一点, 或给int类型的参数赋值时 用Convert.ToInt32()转一下试试呢?
panyee 2003-08-10
  • 打赏
  • 举报
回复
mycomm.Parameters.Add(new SqlParameter("@SubjectName", SqlDbType.Char, 10));
mycomm.Parameters["@SubjectName"].Value=DropDownList2.SelectedItem;

DropDownList2.selectedItem的类型是ListItem, 不是string, 不能直接赋值
要取DropDownList2.selectedItem.Text



还有你的DropDownList2.SelectedValue????

应该是DropDownList2.SelectedItem.Value 吧
flew 2003-08-10
  • 打赏
  • 举报
回复
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!IsPostBack)
{
string selectquery="Select BoardID,BoardName from Board1";
string strconn=ConfigurationSettings.AppSettings["strconn"];
SqlConnection myconn=new SqlConnection(strconn);
SqlDataAdapter myadapter=new SqlDataAdapter(selectquery,myconn);
DataSet myds=new DataSet();
myadapter.Fill(myds,"Board1");
DropDownList1.DataSource=myds.Tables["Board1"].DefaultView;
DropDownList1.DataTextField="BoardName";
DropDownList1.DataValueField="BoardID";
DropDownList1.DataBind();
}
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

private void Button1_Click(object sender, System.EventArgs e)
{
string strconn=ConfigurationSettings.AppSettings["strconn"];
SqlConnection myconn=new SqlConnection(strconn);
string insertquery="Insert into Article1(BoardID,BoardName,SubjectID,SubjectName,Title,Author) values(@BoardID,@BoardName,@SubjectId,@SubjectName,@Title,@Author)";
SqlCommand mycomm=new SqlCommand(insertquery,myconn);
mycomm.Parameters.Add(new SqlParameter("@BoardID", SqlDbType.Int, 4));
mycomm.Parameters["@BoardID"].Value=DropDownList1.SelectedItem.Value;

mycomm.Parameters.Add(new SqlParameter("@BoardName", SqlDbType.Char, 10));
mycomm.Parameters["@BoardName"].Value=DropDownList1.SelectedItem.Text;

mycomm.Parameters.Add(new SqlParameter("@SubjectID", SqlDbType.Int, 4));
mycomm.Parameters["@SubjectID"].Value=DropDownList2.SelectedItem.Value;

mycomm.Parameters.Add(new SqlParameter("@SubjectName", SqlDbType.Char, 10));
mycomm.Parameters["@SubjectName"].Value=DropDownList2.SelectedItem.Text;

mycomm.Parameters.Add(new SqlParameter("@Title", SqlDbType.NVarChar, 50));
mycomm.Parameters["@Title"].Value=TextBox1.Text;

mycomm.Parameters.Add(new SqlParameter("@Author", SqlDbType.Char, 10));
mycomm.Parameters["@Author"].Value=TextBox2.Text;



myconn.Open();
mycomm.ExecuteNonQuery();
myconn.Close();



“/WebApplication1”应用程序中的服务器错误。
--------------------------------------------------------------------------------

String or binary data would be truncated. The statement has been terminated.
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: String or binary data would be truncated. The statement has been terminated.

源错误:


行 119:
行 120: myconn.Open();
行 121: mycomm.ExecuteNonQuery();
行 122: myconn.Close();
行 123:


还是不行

62,052

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧