注册 登录
编程论坛 VB.NET论坛

请教一个数据插入问题

honeybj08 发布于 2010-05-26 10:03, 1003 次点击
径赛项目中大家都知道比赛成绩(bscj,我定义的是Nvchar(10))都是以分和秒为单位的,比如说400米成绩为1'13",但是当我在将其插入数据库时却提示 { '13' 附近有语法错误。字符串 '','2','20069742  ')' 后的引号不完整。} 20069742是学号,
请问这是怎么回事啊???????????
6 回复
#2
sywzs2010-05-26 14:34
看不到有问题的语句,怎么知道错误在那里?
#3
honeybj082010-05-26 16:18
语句没有错,当插入1.12时就没有问题,插入1'12"时就会有问题
#4
sywzs2010-05-27 09:16
你应该把这个语句写出来,便于分析。
既然你不愿意公布语句,我分析大概问题出在单引号“'”和双引号“"”号上。因为它们分别是注释符号和字符串的界定符号。
#5
honeybj082010-05-28 07:00
回复 4楼 sywzs
Dim sqlstr As String
        Dim strConnect As String = "data source=FG-C99768EB468F\SQLEXPRESS;integrated security = sspi;initial catalog=高校田径运动会"
        Dim sqlConnectionl As SqlClient.SqlConnection
        sqlConnectionl = New System.Data.SqlClient.SqlConnection(strConnect)
        sqlConnectionl.Open()
        Dim cmd As New SqlClient.SqlCommand()
        cmd.Connection = sqlConnectionl
        If TextBox5.Text = "" Or TextBox6.Text = "" Then
            MessageBox.Show("比赛成绩和得分不能为空!", "错误提示")
        Else
             = CommandType.Text
             = "select bscj from jscjb where ydybh ='" + TextBox1.Text + "'"
            Dim mydatareader As SqlDataReader = cmd.ExecuteReader
            Do While (mydatareader.Read())
                TextBox5.Text = mydatareader.GetString(0)
            Loop
            If TextBox6.Text <> "" Then
                MsgBox("该运动员成绩已经存在" + Chr(10) + Chr(13) + "请确认输入的运动员编号", MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "错误提示")
                TextBox5.Text = ""
                TextBox6.Text = ""
            Else
                sqlstr = "insert into jscjb(ydybh,xymc,name ,xmmc,bscj,df,student_no) values( '" + TextBox1.Text + "','" + TextBox2.Text _
                     + "','" + TextBox3.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','" + TextBox6.Text + "','" + TextBox7.Text + "')"
                = sqlstr
                cmd.ExecuteNonQuery()
                MessageBox.Show("插入成功!", "正确提示")
                TextBox1.Text = ""
                TextBox2.Text = ""
                TextBox3.Text = ""
                TextBox4.Text = ""
                TextBox5.Text = ""
                TextBox6.Text = ""
                TextBox7.Text = ""
            End If
        End If
        sqlConnectionl.Close()
    End Sub
#6
sywzs2010-05-29 09:08
问题就出在下面的命令中,由于成绩字符串中包含了单引号和双引号,使得字符串中的数据多出了单、双引号,因而命令无法继续运行。建议直接用汉字或其他字符表示,如:“13分2秒”,而不要用 “13'2"”。
#7
honeybj082010-05-30 07:50
回复 6楼 sywzs
谢谢
1