注册 登录
编程论坛 ASP.NET技术论坛

[求助]请教DropDownList插入语句写法问题

zengdan 发布于 2007-05-08 10:46, 1039 次点击

我想把图书信息插入数据库,插入的时候图书的类型采用DropDownList下拉框选择,图书的类型另外建了一张表,将DropDownList与数据绑定了,在这张信息表中与图书类型表中的ID进行关联,可是写插入语句的时候有错,见下面程序中红色的部分,请问那 =后面的语句怎么写才正确?
string Sqlstring = "Insert into BookInfo(BookName,PublishingHouse,Author,Translator,ISBN,PublishDate,Price,Description,suoyinhao,booktype)values(@dname,@dpublish,@dauthor,@dtranslator,@disbn,@dpublishdate,@dprice,@ddescription,@dsuoyinhao,@dbooktype)";

conn.Open();
SqlCommand cmd = new SqlCommand(Sqlstring, conn);
cmd.Parameters.Add("@dname", SqlDbType.VarChar, 80).Value = TextBox1.Text.ToString();
cmd.Parameters.Add("@dpublish", SqlDbType.VarChar, 80).Value = TextBox9.Text.ToString();
cmd.Parameters.Add("@dauthor", SqlDbType.VarChar, 80).Value = TextBox3.Text.ToString();
cmd.Parameters.Add("@dtranslator", SqlDbType.VarChar, 80).Value = TextBox7.Text.ToString();
cmd.Parameters.Add("@disbn", SqlDbType.VarChar, 80).Value = TextBox4.Text.ToString();
cmd.Parameters.Add("@dpublishdate", SqlDbType.VarChar,80).Value = TextBox8.Text.ToString();
cmd.Parameters.Add("@dprice", SqlDbType.VarChar, 80).Value = TextBox5.Text.ToString();

cmd.Parameters.Add("@ddescription", SqlDbType.Text, 16).Value = TextBox10.Text.ToString();
//cmd.Parameters.Add("@dcover", SqlDbType.VarChar, 50).Value = TextBox2.Text.ToString();
cmd.Parameters.Add("@dbooktype", SqlDbType.Int, 4).Value = Convert.ToInt32(DropDownList1.SelectedValue);
cmd.Parameters.Add("@dsuoyinhao", SqlDbType.VarChar,80).Value = TextBox6.Text.ToString();
cmd.ExecuteNonQuery();

Response.Write("<script>alert(\"添加成功\")</script>");
conn.Close();
Response.Write("<br><br><meta http-equiv='refresh' content='1;url=booklitterset.aspx'><br>");


运行后错误提示:
“/zd”应用程序中的服务器错误。
--------------------------------------------------------------------------------

输入字符串的格式不正确。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.FormatException: 输入字符串的格式不正确。

源错误:


行 69: cmd.Parameters.Add("@ddescription", SqlDbType.Text, 16).Value = TextBox10.Text.ToString();
行 70: //cmd.Parameters.Add("@dcover", SqlDbType.VarChar, 50).Value = TextBox2.Text.ToString();
行 71: cmd.Parameters.Add("@dbooktype", SqlDbType.Int, 4).Value = Convert.ToInt32(DropDownList1.SelectedValue);
行 72: cmd.Parameters.Add("@dsuoyinhao", SqlDbType.VarChar,80).Value = TextBox6.Text.ToString();
行 73: cmd.ExecuteNonQuery();
“/zd”应用程序中的服务器错误。
--------------------------------------------------------------------------------

输入字符串的格式不正确。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.FormatException: 输入字符串的格式不正确。

源错误:


行 69: cmd.Parameters.Add("@ddescription", SqlDbType.Text, 16).Value = TextBox10.Text.ToString();
行 70: //cmd.Parameters.Add("@dcover", SqlDbType.VarChar, 50).Value = TextBox2.Text.ToString();
行 71: cmd.Parameters.Add("@dbooktype", SqlDbType.Int, 4).Value = Convert.ToInt32(DropDownList1.SelectedValue);
行 72: cmd.Parameters.Add("@dsuoyinhao", SqlDbType.VarChar,80).Value = TextBox6.Text.ToString();
行 73: cmd.ExecuteNonQuery();

源文件: e:\zengdan\admin\booklitterset.aspx.cs 行: 71

8 回复
#2
skyland842007-05-08 10:55
cmd.Parameters.Add("@dbooktype", SqlDbType.Int, 4).Value = Convert.ToInt32(DropDownList1.SelectedValue);
//response.write(DropDownList1.SelectedValue);
//("@dbooktype", SqlDbType.Int, 4).你这里的4是什么意思?如果是整形的话 我通常是不设定的的!是限定了该类型最大值是4么?
#3
zengdan2007-05-08 10:58
是数据库里设置Int型默认的
#4
skyland842007-05-08 11:10
是吗?我怎么处理这么多回了都没有用过这个 ?
实在无语了~!
response.write(DropDownList1.SelectedValue); 你用这个来显示下 这个的值是什么!
挺怀疑这个值不是数字类型的!
#5
zengdan2007-05-08 11:19
在图书类型表里的图书类型是varchar型
还有一个ID,是自动增长的,就是插入一个图书类型,ID就增加1
在图书信息表里的图书类型是通过图书类型表里的ID传过来的
设外键关联
不然我不知道怎么用DropDownList来选择另一个表的值插入到我要插的表中
#6
zengdan2007-05-08 11:20
ID的类型是int型,数据库里默认是4,修改不 了的
#7
cyyu_ryh2007-05-08 12:40
DropDownList1.SelectedValue的数据类型不对,不可转换.
用DropDownList1.TEXT看看
#8
bygg2007-05-08 12:53
加个try..catch..就可以知道了,
#9
zengdan2007-05-08 14:21
用DropDownList1.TEXT也不行
用try...catch在这里怎么用啊
1