当前位置:编程学习 > C#/ASP.NET >>

求高手看看我的代码。帮我看看那错了。

<%@ Page Language="vb" Debug="true" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script language="VB" runat="server">
    Sub Enter_Click(ByVal Sender As Object, ByVal E As EventArgs)
        Dim conn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db1.mdb"))
        Dim strSql As String
        conn.Open()
        strSql = "Insert Into link (user_name,password,age,email,shenfen,dianhua,submit_date)Values('" & user_name.Text & "','" & password1.Text & "','" & age.Text & "','" & email.Text & "','" & shenfen.Text & "','" & dianhua.Text & ",#" & Now() & "#)"
        Dim cmd As New OleDbCommand(strSql, conn)
        cmd = New OleDbCommand(strSql, conn)
        cmd.ExecuteNonQuery()
        conn.Close()
        message.Text = "注册成功。"
    End Sub
</script>
<html>
<body>
    <h4 align="center">学生的注册</h4>
    <form runat="server">
        用户名:<asp:textbox id="user_name" runat="server"/>
<asp:RequiredFieldValidator id="require1" ControlToValidate="user_name" ErrorMessage="必须输入用户名"  runat="server"/>
<asp:RegularExpressionValidator id="Regular1" ControlToValidate="user_name" ValidationExpression="[a-zA-Z][a-zA-Z0-9_]{0,}" ErrorMessage="第1个字符必须是字母,且只能包含字母、数字和下划线" runat="server" />

<p>用户密码:<asp:textbox id="password1" textmode="Password" runat="server"/>
<p>确认密码:<asp:textbox id="password2" textmode="Password" runat="server"/>
<asp:RequiredFieldValidator id="require2" ControlToValidate="password1" ErrorMessage="必须输入密码"  runat="server"/>
<asp:CompareValidator id="Compare1" ControlToValidate="password1" ControlToCompare="password2" ErrorMessage="密码和确认密码必须一致" runat="server" />

<p>用户年龄:<asp:textbox id="age" runat="server"/>
<asp:RequiredFieldValidator id="require3" ControlToValidate="age" ErrorMessage="必须输入年龄"  runat="server"/>
<asp:RangeValidator id="Range1" ControlToValidate="age" MinimumValue="18" MaximumValue="100" ErrorMessage="年龄应该在18到100之间" Type="Integer" runat="server" />

<p>电子信箱:<asp:textbox id="email" columns="50" runat="server"/>
<asp:RequiredFieldValidator id="require4" ControlToValidate="email" ErrorMessage="必须输入E-mail地址"  runat="server"/>
<asp:RegularExpressionValidator id="Regular2" ControlToValidate="email" ValidationExpression=".{1,}@.{1,}\.[a-zA-Z]{2,3}" ErrorMessage="必须输入正确.{1,}@.{1,}\.[a-zA-Z]{2,3}格式" runat="server" />
        
        <p>身份证号:<asp:textbox id="shenfen" runat="server"/>
        <asp:RequiredFieldValidator id="require5" ControlToValidate="shenfen" ErrorMessage="必须输入身份证号"  runat="server"/>
        <asp:RegularExpressionValidator id="Regular3" ControlToValidate="shenfen" ValidationExpression="[4][1][0][3][0-3][0-3][1][9][8-9][0-9][01][0-9][0-3][0-9][0-9]{3}[1-9x]" ErrorMessage="必须输入河南省洛阳市大于18岁的身份证号" runat="server" />

        <p>联系电话:<asp:textbox id="dianhua" runat="server"/>
        <asp:RequiredFieldValidator id="require6" ControlToValidate="dianhua" ErrorMessage="必须输入联系电话"  runat="server"/>
        <asp:RegularExpressionValidator id="Regular4" ControlToValidate="dianhua" ValidationExpression="[0][3][7][9]-[1-9][0-9]{6,7}" ErrorMessage="必须输入河南省洛阳市的电话" runat="server" />

<p><asp:button id="Enter" text="提 交"  onClick="Enter_Click" runat="server" />
                <p><input type="reset" value="重置" runat="server"/>
<p><asp:label id="message" runat="server"/>
    </form>
</body>
</html>

这个是我的注册页面的代码。。点击提交后。就出错了。·
“/aspnet_client”应用程序中的服务器错误。
--------------------------------------------------------------------------------

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

异常详细信息: System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误。

源错误: 


行 10:         Dim cmd As New OleDbCommand(strSql, conn)
行 11:         cmd = New OleDbCommand(strSql, conn)
行 12:         cmd.ExecuteNonQuery()行 13:         conn.Close()
行 14:         message.Text = "注册成功。"

求高手了~
 



--------------------编程问答-------------------- 你可以输出一下你的SQL 语句看是那个地方出错了,alert(sql语句)。 --------------------编程问答-------------------- Now() 

改成getdate()试试 --------------------编程问答-------------------- SQL寫錯了。。 --------------------编程问答-------------------- "Insert Into link (user_name,password,age,email,shenfen,dianhua,submit_date)Values('" & user_name.Text & "','" & password1.Text & "','" & age.Text & "','" & email.Text & "','" & shenfen.Text & "','" & dianhua.Text & "',#" & Now() & "#)"
少个'吧

应该是这吧。 --------------------编程问答-------------------- 靠,又是这位仁兄!还是SQL语句的问题。你的Sql语句写的也太垃圾了。以后写的时候能不能封装一下。
比如 Insert Into link (user_name,password,age,email,shenfen,dianhua,submit_date)Values('" & user_name.Text & "','" & password1.Text & "','" & age.Text & "','" & email.Text & "','" & shenfen.Text & "','" & dianhua.Text & "',#" & Now() & "#)"
改为
 u=user_name.Text;
 b=password1.Text;
 c=age.Text;
dd=email.Text;
 Insert into lin(user_name,password,age) values(u,b,c,dd)
形式的嘛,这样sql语句也很少出错啊,或则用参数传值。
你的sql语句让人看了正累。 --------------------编程问答-------------------- 我知道是SQL 错了 。但是不知道是那。也不是引号的问题。 --------------------编程问答-------------------- 你调试的时候把整个SQL语句复制出来然后再sqlserver里面运行下嘛,一下就知道哪错了 --------------------编程问答-------------------- 消息 102,级别 15,状态 1,第 1 行
'=' 附近有语法错误。。。。。难道是等号的问题。·? --------------------编程问答-------------------- 把sql语句放查询生成器里执行下。仔细看下就可以了。 --------------------编程问答-------------------- message.Text = strSql 

 Dim cmd As New OleDbCommand(strSql, conn)
  cmd = New OleDbCommand(strSql, conn)
  cmd.ExecuteNonQuery()
  conn.Close()
  message.Text = "注册成功。"
註釋掉
然後把message.Text裏得內容放在數據庫執行一下,然後檢查SQL語句 --------------------编程问答-------------------- 或者你直接把SQL語句帖上來看看。
不是上面的代參數的。 --------------------编程问答-------------------- strSql = "Insert Into link ()Values()“ --------------------编程问答-------------------- strSql = "Insert Into link ()Values()" --------------------编程问答-------------------- strSql = "Insert Into link 
(user_name,password,age,email,shenfen,dianhua,submit_date)
Values
('" & user_name.Text & "','" & password1.Text & "','" & age.Text & "','" & email.Text & "','" & shenfen.Text & "','" & dianhua.Text & "',#" & Now() & "#)"
我怎么看着少了个引号 --------------------编程问答-------------------- 嘿嘿,我想问个问题,能不能把 #" & Now() & "#)"
改成'" & Now() & "')" 试试 --------------------编程问答--------------------
引用 5 楼 gudujianxiao 的回复:
靠,又是这位仁兄!还是SQL语句的问题。你的Sql语句写的也太垃圾了。以后写的时候能不能封装一下。
比如 Insert Into link (user_name,password,age,email,shenfen,dianhua,submit_date)Values('" & user_name.Text & "','" & password1.Text & "……



你那样写 和他那样写 一样 没什么区别!

尽量不要使用sql语句拼接 多使用存过和替代参数 --------------------编程问答-------------------- 只是给个例子给他看,总比他的sql语句又是‘’又是""好多了吧,实际写的过程中,都是通过传入参数的。 --------------------编程问答-------------------- 帮顶!
下次发帖的时候记得粘贴过来的代码使用 插入代码 选项,看的教清楚,这样看着真费劲。。。
--------------------编程问答--------------------
引用 7 楼 harry1224 的回复:
你调试的时候把整个SQL语句复制出来然后再sqlserver里面运行下嘛,一下就知道哪错了

是啊,你真么那么死心眼。 --------------------编程问答--------------------
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,