Datensatz hinzufügen funktioniert nicht

realmontanakid

Grünschnabel
Hi zusammen

Bin ein "Frischling" im ASP.net Sektor und habe ein Problem beim Hinzufügen eines Datensatzes in eine Access Datenbank. Folgende Fehlermeldung bekomme ich.

SYNTAXFEHLER IN DER INSERT INTO ANWEISUNG
iCmd.ExecuteNonQuery()

Hier ist mein Code.Was könnte hier falsch sein?

<%@ Page Language="VB" Debug="True" Strict="True" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<%@ Import Namespace="System.Text"%>

<html>
<script runat="server">

Sub Page_Load (ByVal Sender As Object, _
ByVal E As EventArgs)
' Verbindungszeichenfolge zusammensetzen
Dim connStr As String
connStr = "Provider=Microsoft.Jet.OLEDB.4.0;"
connStr += _
"Data Source=c:\inetpub\wwwroot\Artikel_db.mdb;"

' Verbindung zur Datenbank herstellen
Dim conn As New OleDbConnection(connStr)
conn.Open()

' Bei einem Postback einen Datensatz anfügen
If IsPostBack Then
Dim iCmd As New OleDbCommand()
iCmd.Connection = conn

iCmd.Parameters.Add("@Hersteller", txtHersteller.value)
iCmd.Parameters.Add("@Artikel", txtArtikel.value)
iCmd.Parameters.Add("@Beschreibung", txtBeschreibung.value)
iCmd.Parameters.Add("@Preis", txtPreis.value)
iCmd.Parameters.Add("@Lieferant", txtLieferant.value)
iCmd.Parameters.Add("@Datum", txtDatum.value)
iCmd.Parameters.Add("@Bestellungsdatum", txtBestellungsdatum.value)
iCmd.Parameters.Add("@Lieferungsdatum", txtLieferungsdatum.value)
iCmd.Parameters.Add("@User", txtUser.value)
iCmd.Parameters.Add("@Garantie", txtGarantie.value)
iCmd.Parameters.Add("@Seriennr", txtSeriennr.value)


iCmd.CommandText = "INSERT INTO [tbl_Artikel]"
iCmd.CommandText += "(Hersteller, Artikel, Beschreibung, Preis, Lieferant, Datum, Bestellungsdatum, Lieferungsdatum, User, Garantie, Seriennr) "
iCmd.CommandText += "VALUES (@Hersteller, @Artikel, @Beschreibung, @Preis, @Lieferant, @Datum, @Bestellungsdatum, @Lieferungsdatum, @User, @Garantie, @Seriennr)"
iCmd.ExecuteNonQuery()
End If

' SQL-Kommando erstellen und ausführen
Dim sql As String
sql = "SELECT * FROM tbl_Artikel"
Dim cmd As New OleDbCommand(sql, conn)
Dim myDataReader As OleDbDataReader
myDataReader = cmd.ExecuteReader()

' SQL-Resultat an ein Steuerelement binden
myGrid.DataSource = myDataReader
DataBind()

myDataReader.Close()
conn.Close()

End Sub
</script>
<head><title>
Datensätze hinzufügen
</title></head>
<body class=font background=welle.gif>
<P align=center>
<TABLE style="BORDER-RIGHT: #353535 1px solid; BORDER-BOTTOM: #353535 1px solid"
height=100 cellSpacing=10 cellPadding=10 width="50%" align=center bgColor=white
background="" border=0>
<TR>
<TD>
<hr>

<TABLE style= height=10 cellSpacing=1
cellPadding=1 width="100%" align=center bgColor=white background=""
border=0>
<TR>
<TD><FONT face="Tobit Headline"
>ŸÿÅÆÐð</FONT></TD>
<TD>
<P align=right><FONT face="Tobit Headline"
>Information
Services</FONT></P></TD></TR></TABLE>
<hr>
<br>
<table style="BACKGROUND-COLOR: #d4dae2" cellSpacing=1 cellPadding=1
width="100%" align=left bgColor=#ffffff border=0
font-size="10px">
<TR>
<td><b><FONT class=font
face=Arial size=2
>Artikel</FONT></B></TD></TR></TABLE><br
><br><br>
<h3>Datensätze hinzufügen</h3>
<br>
<form runat="server">
<p>Neuen Artikel hinzufügen:</p>

Hersteller<br>
<input type="text" runat="server" id="txtHersteller"><br>

Artikel<br>
<input type="text" runat="server" id="txtArtikel"><br>

Beschreibung<br>
<input type="text" runat="server" id="txtBeschreibung"><br>

Preis<br>
<input type="text" runat="server" id="txtPreis"><br>

Lieferant<br>
<input type="text" runat="server" id="txtLieferant"><br>

Datum<br>
<input type="text" runat="server" id="txtDatum"><br>

Datum Bestellung<br>
<input type="text" runat="server" id="txtBestellungsdatum"><br>

Datum Lieferung<br>
<input type="text" runat="server" id="txtLieferungsdatum"><br>

User<br>
<input type="text" runat="server" id="txtUser"><br>

Garantie<br>
<input type="text" runat="server" id="txtGarantie"><br>

Seriennr<br>
<input type="text" runat="server" id="txtSeriennr"><br><br>

<input type="submit" runat="server" value="Hinzufügen">
<br><br>
<p>Die Artikel-Datenbank verzeichnet folgende
Artikel:</p>

<asp:DataGrid id="myGrid" runat="server"
Width="700"
BackColor="#CCCCCC"
BorderColor="black"
ShowFooter="false"
CellPadding=3
CellSpacing="0"
Font-Name="Tahoma"
Font-Size="8pt"
HeaderStyle-BackColor="#999999"
EnableViewState="true"
align="center"
/>


</form></body></html>
 
Wahrscheinlich gibst du in den Feldern irgendwas ein, mit dem der SQL-Server nichts anfangen kann.
Ich würde bei deinen Feldern allgemein mal eine Synaxprüfung und Typprüfung durchführen. Zur Zeit kann man alles mögliche eingeben, was Platz für SQL-injections schafft.
Ich tippe mal darauf, daß er einen string nicht als Zahl oder einen string nicht als Datum erkennt. Gib doch mal Werte statisch im SQL-Statement an und schau, ob er es verarbeiten kann. Wenn ja, dann liegts an der Formatierung von deinem TextValue zum SQL-Typ.
 
Genau den Fehler hatte ich auch:

Guck ob Schreibberchtigung für "jeder" in dem Ordner wo die Datenbanken liegen ist.

Bei mir wurde "jeder" durch Domaenrichtlinien gelöscht.

Gruß Basti
 
Hi

Danke für deine Antwort.. Die Datenbank(Access) liegt im wwwroot Verzeichnis des IIS. Genauso wie die Datei... Selbst nachdem ich "Jeder" Rechte gegeben hab funktioniert es nicht. HIIILLLLFFFFFEEEEEEEE......
 
Wenn ich nen SQL Fehler hab, lass ich mir immer das SQL Statement als Text ausgeben.
Also einfach mit Response.Write oder nem Label oder so und dann siehst ziemlich schnell wo dein Fehler ist.
 
Hi zusammen

Hat sich schon erledigt.. Es lag daran das in der Tabelle eine Spalte "USER" hieß und das wohl ein geschütztes Wort der Sprache ist. Trotz allem vielen Dank!
 
Zurück