[asp.net error in insert to statement]

Pagina: 1
Acties:
  • 36 views sinds 30-01-2008

  • DJ-B
  • Registratie: September 2001
  • Laatst online: 30-04 07:45
Zodra ik onderstaande pagina heb ingevuld krijg ik de melding:
System.Data.OleDb.OleDbException: Syntax error in INSERT INTO statement.
Op lijn 39
code:
1
2
3
4
5
Line 37:     UserDS.Tables("user_data").Rows.Add(Row)
Line 38:     
Line 39:     Adapter.Update(UserDS, "user_data")
Line 40:     
Line 41:     If UserDS.HasErrors Then


Zie hier de asp.net source:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<%@ Page Explicit="True" Language="VB" Debug="True" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server">

    Dim ConnectString, SelectStatement As String
    Dim Connect As OleDbConnection = New OleDbConnection
    Dim Adapter As OleDbDataAdapter = New OleDbDataAdapter
    Dim UsersCB As OleDbCommandBuilder
    Dim UserDS As DataSet = New DataSet
    Dim Row As DataRow
    
    Sub Submit_Click(Sender As Object, E As EventArgs)
    GetAd
    Row = UserDS.Tables("user_data").NewRow
    'Row.Item("Crf") = "1"
    'Row.Item("Username") = UsernameText.Text
    'Row.Item("Domain") = DomainDropDown.SelectedItem.Value
    'Row.Item("Firstname") = FirstnameText.Text
    'Row.Item("Lastname") = LastnameText.Text
    'Row.Item("Mail") = EmailText.Text
    'Row.Item("Location") = LocationDropDown.SelectedItem.Value
    'Row.Item("Sector") = SectorDropDown.SelectedItem.Value
    'Row.Item("Department") = DepartmentText.Text
    
        'Dim RoleForDB As String
        'Dim ItemNum As Integer
          'For ItemNum = 0 To RoleCheckBox.Items.Count - 1
            'If RoleCheckBox.Items(ItemNum).Selected = True Then
              'RoleForDB = RoleForDB & RoleCheckBox.Items(Itemnum).Text
            'End If
          'Next
          
    'Row.Item("Role") = RoleForDB    
    'Row.Item("Date") = Today
    
    UserDS.Tables("user_data").Rows.Add(Row)
    
    Adapter.Update(UserDS, "user_data")
    
    If UserDS.HasErrors Then
        Message.Text = "There was an error placing your ad. " & _
           UserDS.Tables("user_data").Rows(0).RowError
    Else
        Message.Text = "All new user information is saved"
    End If
    End Sub
    
    Sub GetAd
    SelectStatement = "Select * From user_data"
    ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Inetpub\wwwroot\19\data.mdb"
    Connect.ConnectionString = ConnectString
    Adapter.SelectCommand = _
        new OleDbCommand(SelectStatement, Connect)
    UsersCB = New OleDbCommandBuilder(Adapter)
    Adapter.Fill(UserDS,"user_data")
    End Sub

</script>
<html>
<body vlink=red>
<form runat="server">
<b>Enter new user information:</b><p>
        <table>
          <tr><td>UserName:</td><td><asp:textbox id="UserNameText" runat="server" MaxLength="8"/><asp:requiredfieldvalidator id="UserNameRequired" ControltoValidate="UserNameText" errorMessage="* This field must be filled in" runat="server"></asp:requiredfieldvalidator></td></tr>
        
          <tr><td>Domain:</td><td>
          <asp:dropdownlist id="DomainDropDown" runat="server">
            <asp:listitem>Pick A Domain</asp:listitem>
            <asp:listitem>a</asp:listitem>
            <asp:listitem>b</asp:listitem>
          </asp:dropdownlist>
            <asp:requiredfieldvalidator id="DomainRequired" ControltoValidate="DomainDropDown" errorMessage="* This field must be filled in" initialvalue="Pick A Domain" runat="server"></asp:requiredfieldvalidator>
          </td></tr>
        
        <tr><td>FirstName:</td><td><asp:textbox id="FirstnameText" runat="server"/><asp:requiredfieldvalidator id="FirstnameRequired" ControltoValidate="FirstnameText" errorMessage="* This field must be filled in" runat="server"></asp:requiredfieldvalidator></td></tr>
        <tr><td>LastName:</td><td><asp:textbox id="LastnameText" runat="server"/><asp:requiredfieldvalidator id="LastnameRequired" ControltoValidate="LastnameText" errorMessage="* This field must be filled in" runat="server"></asp:requiredfieldvalidator></td></tr>
        <tr><td>E-mail:</td><td><asp:textbox id="EmailText" runat="server" columns="35"/><asp:requiredfieldvalidator id="EmailRequired" ControltoValidate="EmailText" errorMessage="* This field must be filled in" runat="server"></asp:requiredfieldvalidator><asp:regularexpressionvalidator id="MailOk" ControltoValidate="EmailText" validationexpression="^([a-zA-Z\.]+)@(organon|organonusa|diosynth|organoninc|fr.organon).(com|nl|cz|hu|jp|no|se|fi|co.uk|es|de|pl|dk)$" errorMessage="* This is an invalid e-mail address" runat="server"></asp:regularexpressionvalidator></td></tr>
        
        <tr><td>Location:</td><td>
          <asp:dropdownlist id="LocationDropDown" runat="server">
            <asp:listitem>Pick A Location</asp:listitem>
            <asp:listitem>a</asp:listitem>
            <asp:listitem>b</asp:listitem>
            <asp:listitem>c</asp:listitem>
            <asp:listitem>d</asp:listitem>
          </asp:dropdownlist>
            <asp:requiredfieldvalidator id="LocationRequired" ControltoValidate="LocationDropDown" errorMessage="* This field must be filled in" initialvalue="Pick A Location" runat="server"></asp:requiredfieldvalidator>
        </td></tr>
        
        <tr><td>Sector:</td><td>
          <asp:dropdownlist id="SectorDropDown" runat="server">
            <asp:listitem>Pick A Sector</asp:listitem>
            <asp:listitem>a</asp:listitem>
            <asp:listitem>b</asp:listitem>
            <asp:listitem>c</asp:listitem>
            <asp:listitem>d</asp:listitem>
            <asp:listitem>e</asp:listitem>
          </asp:dropdownlist>
            <asp:requiredfieldvalidator id="SectorRequired" ControltoValidate="SectorDropDown" errorMessage="* This field must be filled in" initialvalue="Pick A Sector" runat="server"></asp:requiredfieldvalidator>
        </td></tr>
        
        <tr><td>Department:</td><td><asp:textbox id="DepartmentText" runat="server"/><asp:requiredfieldvalidator id="DepartmentRequired" ControltoValidate="DepartmentText" errorMessage="* This field must be filled in" runat="server"></asp:requiredfieldvalidator></td></tr>
        
        <tr><td>Role:</td><td>
          <asp:checkboxlist id="RoleCheckBox" runat="server" repeatcolumns="3" repeatlayout="table">
            <asp:listitem>Business Administrator</asp:listitem>
            <asp:listitem>C2_Authors</asp:listitem>
            <asp:listitem>C2_Approvers</asp:listitem>
            <asp:listitem>C2_Authorizers</asp:listitem>
            <asp:listitem>C3_Authors</asp:listitem>
            <asp:listitem>C3_Approvers</asp:listitem>
            <asp:listitem>C3_Authorizers</asp:listitem>
            <asp:listitem>C4_Authors</asp:listitem>
            <asp:listitem>C4_Approvers</asp:listitem>
            <asp:listitem>C4_Authorizers</asp:listitem>    
          </asp:checkboxlist>
        </td></tr>
      </table>
        
        <p>     
        <asp:button text="Save and Next*" onclick="Submit_Click" runat="server"/>
        <asp:button text="Save and CRF*" runat="server"/>
        <p>
        <table>
        <tr><td>
        *Save and Next:</td><td> Saves this user information and let you add an other user.</td>
        <tr><td>*Save and CRF:</td><td> Saves this user information and wil create the appropiate CRF.</td></tr>
        </table>
    <asp:label id="message" runat="server"/>
</form>
</body>
</html>


Database layout:

Naam: user_data

Velden:

Id : autonumber
Alle andere velden zijn van het type TEXT

Vraag:
Heeft iemand enig idee waar het nu precies fout gaat? Zoals je ziet in de source heb ik het toevoegen van de Row Items al uitgeschakeld en het probleem blijft aanwezig. Verder heb ik de security op de database op Everyone Full Control staan (niet netjes, maar om even te proberen).
Ik gebruik het boek ASP.NET for Dummies en daar heb ik dit voorbeeld uit overgenomen en aangepast. Het voorbeeld werkt wel.
Ik heb de foutcodes al door google en T.net search heen gehaald zonder een resultaat.

Wie heeft een goed idee? Super bedankt alvast! (word echt helemaal gek :'( )

  • CaptBiele
  • Registratie: Juni 2002
  • Laatst online: 27-08-2021

CaptBiele

No Worries!

ik heb niet de hele code doorgelezen, maar je kan het toch testen in Query Analyzer?

controleer wat je uitvoer is, en voer een los insert statement uit.... is wat makkelijker debuggen

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 27-04 18:17

gorgi_19

Kruimeltjes zijn weer op :9

Ik mis uberhaupt je InsertCommand; je applicatie kan je SQL statement niet raden.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Het gaat mis bij de Adapter.Update() methode.

Om de .Update() methode op een dataadapter te kunnen gebruiken, moeten er op de dataadapter command-objects aanwezig zijn voor het inserten, deleten, en updaten van data in de database, en die zie ik nergens in je code.

Voor jouw code heb je in ieder geval een INSERT command nodig, omdat je een nieuwe regel in de dataset aanmaakt en die met .Update() naar de database wil wegschrijven. Aangezien ik nergens een INSERT command gezien heb, verwacht ik eigenlijk een andere foutmelding. Misschien ben je echter vergeten die code hier ook neer te zetten ... maar daar moet je het in ieder geval in zoeken.

HTH :)

  • DJ-B
  • Registratie: September 2001
  • Laatst online: 30-04 07:45
gorgi_19 schreef op dinsdag 20 september 2005 @ 10:50:
Ik mis uberhaupt je InsertCommand; je applicatie kan je SQL statement niet raden.
Dit word door ASP.NET automatisch gedaan (het dataset word opgeslagen in de database)

  • DJ-B
  • Registratie: September 2001
  • Laatst online: 30-04 07:45
Verwijderd schreef op dinsdag 20 september 2005 @ 10:55:
Het gaat mis bij de Adapter.Update() methode.

Om de .Update() methode op een dataadapter te kunnen gebruiken, moeten er op de dataadapter command-objects aanwezig zijn voor het inserten, deleten, en updaten van data in de database, en die zie ik nergens in je code.

Voor jouw code heb je in ieder geval een INSERT command nodig, omdat je een nieuwe regel in de dataset aanmaakt en die met .Update() naar de database wil wegschrijven. Aangezien ik nergens een INSERT command gezien heb, verwacht ik eigenlijk een andere foutmelding. Misschien ben je echter vergeten die code hier ook neer te zetten ... maar daar moet je het in ieder geval in zoeken.

HTH :)
Ik zal Adapter.InsertCommand eens gaan vullen. Ik vind het erg vreemd wat het voorbeeld uit mijn boek heeft dit niet en werkt toch prima! Ik heb trouwens alle code die er is gepost.

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:31
Het is niet de bedoeling dat wij de code voor jou gaan debuggen natuurlijk.
Vul idd de insert-command eens in (hoe weet de data-adapter anders hoe hij moet gaan inserten?) of laat ze eens automatisch genereren. Kijk ook eens wat het sql insert statement is, ga eens na wat er precies naar de DB gestuurd wordt, etc....

Dit probleem moet je gewoon , mits wat debugwerk (debuggen is een noodzakelijke skill voor iedere programmeur) zelf moet kunnen oplossen.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.