程序代码如下:
<%@ Page Language="VB" ContentType="text/html" ResponseEncoding="gb2312" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>论坛</title>
</head>
<script language="vb" runat="server">
sub Submit_OnClick(sender as Object,e as EventArgs)
  if Page.IsValid then
    dim subjectU,username,e_mail,text as string
subjectU = trim(subject.text)
username = trim(send.text)
e_mail = trim(email.text)
text = body.text
text = replace(text,chr(13)+chr(10),"<br>")
    dim senddate as string = now
    dim conn as OleDbConnection
    conn = new OleDbConnection()
conn.ConnectionString = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" & server.MapPath("discuss.mdb")
conn.Open()
dim cmd as OleDbCommand
dim sql as string
sql = "select max(id) as id from content"
cmd = new OleDbCommand(sql,conn)
dim rd as OleDbDataReader
dim maxid as Integer
rd = cmd.ExecuteReader()
rd.Read()
if IsDBNull(rd.Item("id")) then
   maxid = 1
else
   maxid = rd.Item("id")+1 
end if
rd.Close()
sql = "insert into content values('"+maxid+"','"+subjectU+"','"+username+"','"+e_mail+"','"+text+"','"+senddate+"','0')"
cmd  = new OleDbCommand(sql,conn)
cmd.ExecuteNonQuery()
conn.Close()
Response.Write("帖子已成功发布,谢谢")
subject.text=""
body.text=""
send.text=""
email.text=""
  end if
end sub
sub Clear_OnClick(sender as Object,e as EventArgs)
    subject.text=""
body.text=""
send.text=""
email.text=""
end sub
</script>
<body>
<form runat="server">
文章标题:<asp:textbox ID="subject" runat="server" />
          <asp:RequiredFieldValidator ID="valid1" runat="server" ControlToValidate="subject">(必要栏)
  </asp:RequiredFieldValidator><br>
文章内容:<asp:textbox ID="body" runat="server" TextMode="MultiLine" Rows="5" Width="80%" />
          <asp:RequiredFieldValidator ID="valid2" runat="server" ControlToValidate="body">(必要栏)
  </asp:RequiredFieldValidator><br>  
您的大名:<asp:textbox ID="send" runat="server" />
          <asp:RequiredFieldValidator ID="valid4" ControlToValidate="send" runat="server">(名字不能少哦)
  </asp:RequiredFieldValidator><br>      
邮件地址:<asp:textbox ID="email" runat="server" />
          <asp:RegularExpressionValidator ID="valid5" runat="server" ControlToValidate="email"
   ValidationExpression=".{1,}@.{1,}\..{1,}">(请输入有效的邮件地址)
  </asp:RegularExpressionValidator><p>
<asp:button ID="submit" Text="发表流言" runat="server" OnClick="Submit_OnClick" />
<input type="button" ID="clear" value="清除重写" runat="server" OnServerClick="Clear_OnClick" />      
</form>
</body>
</html>我的问题就出在插入数据库的时候出现的。我的数据表content
字段为:
id  长整形
subject  文本
sender  文本
email  文本
body  文本
senddate  文本
parent  长整形每次提交的时候总是提示:
输入字符串的格式不正确。
我找到了根接的所在,就是那个'"+maxid+"'出的问题,也就是说我定义的maxid这个整形变量不能和数据库内的id字段匹配。
我认为是这个地方出了问题,可就是无法排除错误
dim maxid as Integer
rd = cmd.ExecuteReader()
rd.Read()
if IsDBNull(rd.Item("id")) then  就是这里有问题
   maxid = 1
else
   maxid = rd.Item("id")+1 
end if
我想判断rd.Read()所查出的的最大值,如果查到的是空则maxid = 1,如果不为空就+1。但是我不知道该如何写这个if判断条件了,有时候总是说DBNull和integer类型不匹配。
大哥们帮我看看了,急死了。

解决方案 »

  1.   

    sql = "insert into content values('"+maxid+"','"+subjectU+"','"+username+"','"+e_mail+"','"+text+"','"+senddate+"','0')"
    --------------------------------
    改成
    sql = "insert into content values("+maxid+",'"+subjectU+"','"+username+"','"+e_mail+"','"+text+"','"+senddate+"','0')"//int类型的不要加'',也就是'"+maxid+"'-->"+maxid+"
      

  2.   

    还是不行啊
    提示:输入字符串的格式不正确。
    但我要是把"+maxid+"换成数字就可以插入成功,该怎么办啊。
      

  3.   

    sql = "select max(id) as id from content"
    这个执行后,CLR自动为你创建读取器的架构,它的列标题不一定是id的
    rd.Item("id"))改成rd.Item(0)
      

  4.   

    是呀,我设成是自增的了,还是不行有错误输入字符串的格式不正确。
    源错误: 
    行 36:  end if
    行 37:  rd.Close()
    行 38:  sql = "insert into content values("+maxid+",'"+subjectU+"','"+username+"','"+e_mail+"','"+text+"','"+senddate+"',0)"
    行 39:  cmd  = new OleDbCommand(sql,conn)
    行 40:  cmd.ExecuteNonQuery()
     
      

  5.   

    是第38行有错误堆栈跟踪: 
    [FormatException: 输入字符串的格式不正确。]
       Microsoft.VisualBasic.CompilerServices.DoubleType.Parse(String Value, NumberFormatInfo NumberFormat) +195
       Microsoft.VisualBasic.CompilerServices.DoubleType.FromString(String Value, NumberFormatInfo NumberFormat) +82[InvalidCastException: 从字符串“insert into content values(”到类型“Double”的强制转换无效。]
       Microsoft.VisualBasic.CompilerServices.DoubleType.FromString(String Value, NumberFormatInfo NumberFormat) +171
       Microsoft.VisualBasic.CompilerServices.DoubleType.FromString(String Value) +7 
      

  6.   

    在自增的情况下是不需要插入id值的,把你的插入语句改成这样:
    INSERT INTO content(subject,sender,email,body,senddate,parent) VALUES("'"+subjectU+"','"+username+"','"+e_mail+"','"+text+"','"+senddate+"',0)"