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

数据库更新不了!

赤那 发布于 2010-06-21 23:39, 1469 次点击
部分代码:
Sub Sure_Click(ByVal Sender As Object, ByVal E As EventArgs) Handles Sure.Click
        Dim StrCnn As String
        Dim Sql As String
        Dim theText As String
        Dim theObj As String
        Dim theFace As String
        Dim theFont As String
        Dim FacePic As String
        theText = T1.Text  '获取用户的发言信息
        theObj = drop.SelectedItem.Text  '获取用户所选择的聊天对象
        theFace = drop1.SelectedItem.Text  '获取用户所选择的表情
        theFont = drop2.SelectedItem.Value  '获取用户所选择的字体颜色
        FacePic = drop3.SelectedItem.Value  '获取用户所选择的贴图
        '连接数据库
        StrCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & Server.MapPath("lts.mdb")
        Cnn = New OleDbConnection(StrCnn)
        Cnn.Open()
        '保存用户的发言信息,其中发言人通过Session变量username来获取
        Sql = "insert into content(Talker,Toobj,Color,Content,FaceStr,FacePic) values('" & Session("username") & "','" & theObj & "','" & theFont & "','" & theText & "','" & theFace & "','" & FacePic & "')"
        Cmd = New OleDbCommand(Sql, Cnn)
        Cmd.ExecuteNonQuery()
        Cnn.Close()
        T1.Text = ""  '清空信息文本框,以便再次输入
    End Sub

错误信息:
字段 'content.Talker' 不能是零长度的字符串。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.OleDb.OleDbException: 字段 'content.Talker' 不能是零长度的字符串。

源错误:


行 71:         Sql = "insert into content(Talker,Toobj,Color,Content,FaceStr,FacePic) values('" & Session("username") & "','" & theObj & "','" & theFont & "','" & theText & "','" & theFace & "','" & FacePic & "')"
行 72:         Cmd = New OleDbCommand(Sql, Cnn)
行 73:         Cmd.ExecuteNonQuery()
行 74:         Cnn.Close()
行 75:         T1.Text = ""  '清空信息文本框,以便再次输入
 
26 回复
#2
冰镇柠檬汁儿2010-06-22 09:20
从错误信息上看,应该是你的content表的Talker字段不能为空,而你传入的值Session("username")应该是null或者"",你跟下程序吧。
#3
赤那2010-06-22 15:23
它说这句有错
行 73:         Cmd.ExecuteNonQuery()
#4
hyei19842010-06-22 15:28
        Sql = "insert into content(Talker,Toobj,Color,Content,FaceStr,FacePic) values('" & Session("username") & "','" & theObj & "','" & theFont & "','" & theText & "','" & theFace & "','" & FacePic & "')"

改成
        Sql = "insert into content(Talker,Toobj,Color,Content,FaceStr,FacePic) values('" & Session("username").ToString() & "','" & theObj & "','" & theFont & "','" & theText & "','" & theFace & "','" & FacePic & "')" 试试

#5
冰镇柠檬汁儿2010-06-22 15:39
以下是引用赤那在2010-6-22 15:23:45的发言:

它说这句有错
行 73:         Cmd.ExecuteNonQuery()
当然是这里错误,你写的SQL,到哪里执行?当然是去数据库执行的时候才会报错,难道你拼写一个字符串,就能报出错误?
#6
冰镇柠檬汁儿2010-06-22 15:40
以下是引用hyei1984在2010-6-22 15:28:58的发言:

        Sql = "insert into content(Talker,Toobj,Color,Content,FaceStr,FacePic) values('" & Session("username") & "','" & theObj & "','" & theFont & "','" & theText & "','" & theFace & "','" & FacePic & "')"

改成
        Sql = "insert into content(Talker,Toobj,Color,Content,FaceStr,FacePic) values('" & Session("username").ToString() & "','" & theObj & "','" & theFont & "','" & theText & "','" & theFace & "','" & FacePic & "')" 试试
你这么写有个好处,就是Session("username")为null的时候在拼字符串的时候就能报错
#7
张丹2010-06-22 15:44
1.看数据库是否连接上
2.session中是否有值
3.sql语句是否写好了

 theText = T1.Text  '获取用户的发言信息
保存用户的发言信息,其中发言人通过Session变量username来获取    '" & Session("username") & "'
我有点怀疑你将theText = T1.Text  和 Session("username") 怎么联系起来的,你用的时候用的是Session("username") ,赋值的时候是用theText = T1.Text 赋值的,你再看看



#8
赤那2010-06-22 15:54
还是不行!
数据库能连接

#9
赤那2010-06-22 16:00
'" & Session("username") & "'这里应该没有问题吧
#10
冰镇柠檬汁儿2010-06-22 16:01
你用程序跟一下Session("username")的值是什么
#11
赤那2010-06-22 16:02
theText = T1.Text    theText是与Content对应的
#12
冰镇柠檬汁儿2010-06-22 16:02
以下是引用赤那在2010-6-22 16:00:02的发言:

'" & Session("username") & "'这里应该没有问题吧
不是你的写法有错,而是这个值放到SQL语句后,再到数据库里执行是不是有问题
#13
赤那2010-06-22 16:02
回复 10楼 冰镇柠檬汁儿
应该是用户名
#14
赤那2010-06-22 16:05
用户名在数据表的字段名是NC
#15
冰镇柠檬汁儿2010-06-22 16:06
Session("username")的值在程序中是什么?这和它应该是什么不是一个含义
#16
hyei19842010-06-22 16:11
楼主在
   Cmd = New OleDbCommand(Sql, Cnn)打个断点
然后把这里的 sql值贴出来看看
#17
赤那2010-06-22 16:14
怎样在 Cmd = New OleDbCommand(Sql, Cnn)打个断点,我不会,新手
#18
hyei19842010-06-22 16:28
难怪会被这个问题困扰。。。。。。鼠标在代码最左边点一下 ,点出那个红点
只有本站会员才能查看附件,请 登录
#19
冰镇柠檬汁儿2010-06-22 16:31
把光标放到你要设断点的代码行,然后按F9按钮,就可以设置断点了,在你运行时,程序会停在断点处,然后按F10或F11就可以跟程序了,在这时把鼠标放到变量上,变量的值就能显示出来了,如果一些显示不出来,那就用跟踪窗口。
跟踪窗口是在运行状态下找到“调试->窗口->监视->监视1”,在打开的视图中,在名称的列中输入你要看的变量或其他什么的,然后在值那一列中就会显示它当前的值
#20
赤那2010-06-22 16:46
只有本站会员才能查看附件,请 登录
是不是这个
#21
赤那2010-06-22 16:50
Sql的值是nothing
#22
冰镇柠檬汁儿2010-06-22 16:52
你的断点打在哪里了?
#23
赤那2010-06-22 17:00
错了不好意思!是这个
只有本站会员才能查看附件,请 登录
#24
赤那2010-06-22 17:01
& Session("username")空的
#25
冰镇柠檬汁儿2010-06-22 17:12
终于找到原因了吧,这是你的session没有赋值
#26
赤那2010-06-22 17:18
'将用户的名称赋予Session变量,以便在其他页面中识别当前用户
            Session(username) = Trim(theName)
有赋值啊
#27
赤那2010-06-22 17:19
我好不好意思才打赏10分那么
花了你们那么长的时间
1