ArimSlayer Geschrieben 11. September 2006 Teilen Geschrieben 11. September 2006 Also ich versuche mit einem Lernscript daten aus der Datenbank zu ändern. Dabei taucht ständig ein fehler auf. Hier erst mal der QuellCode: <%@ Import Namespace="System.Data.OleDb" %> <%@ Import Namespace="System.Data" %> <%@ Page Language="VB" Debug="True" Strict="True" %> <HTML> <HEAD> <title>Datensätze hinzufügen </title> <script runat="server"> Sub Page_Load (ByVal Sender As Object, _ ByVal E As EventArgs) ' Verbindungszeichenfolge zusammensetzen Dim connStr As String connStr = "Provider=SQLOLEDB.1;" connStr +="Data Source=SERVER;" connStr +="Initial Catalog=DATENBANK;" connStr +="User ID=USER;" connStr +="Password=PW;" ' 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("@CompanyName", txtFirma.value) iCmd.Parameters.Add("@Phone", txtTelefon.value) iCmd.CommandText = "INSERT INTO Customers " iCmd.CommandText += "(CompanyName, Phone) " iCmd.CommandText += "VALUES (@CompanyName,@Phone)" iCmd.ExecuteNonQuery() End If ' SQL-Kommando erstellen und ausführen Dim sql As String sql = "SELECT * FROM Customers" 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> <body> <h3>Datensätze hinzufügen</h3> <p>Die Nordwind-Datenbank verzeichnet folgende Versandfirmen:</p> <asp:DataGrid id="myGrid" runat="server" /> <br> <form runat="server" ID="Form1"> <p>Neue Versandfirma hinzufügen:</p> Firmenname<br> <input type="text" runat="server" id="txtFirma" NAME="txtFirma"><br> Telefon<br> <input type="text" runat="server" id="txtTelefon" NAME="txtTelefon"><br> <input type="submit" runat="server" value="Hinzufügen" ID="Submit1" NAME="Submit1"> </form> </body> </HTML> Dieser Fehler kommt ständig, wenn ich die Seite ausführe, ich habe diesen Script Code direkt aus "galileo.com openbook" und in der Visual Studio 2003 Hilfe wird auch überall angezeigt das es mit "VALUES (@CompanyName,@Phone)" funktioniert.. und soviel ich gesehen hab wird das nicht extra deklariert. *mh vielleicht habt ihr ja ein tipp Ausnahmedetails: System.Data.OleDb.OleDbException: Die Variable '@CompanyName' muss deklariert werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ArimSlayer Geschrieben 12. September 2006 Autor Teilen Geschrieben 12. September 2006 Hab es nun selber gelöst der Fehler lag nun daran : If IsPostBack Then Dim iCmd As New OleDbCommand() iCmd.Connection = conn iCmd.Parameters.Add("@CompanyName", txtFirma.value) iCmd.Parameters.Add("@Phone", txtTelefon.value) iCmd.CommandText = "INSERT INTO Customers " iCmd.CommandText += "(CompanyName, Phone) " iCmd.CommandText += "VALUES (@CompanyName,@Phone)" iCmd.ExecuteNonQuery() End If muß so aussehen If IsPostBack Then Dim iCmd As New OleDbCommand() iCmd.Connection = conn iCmd.Parameters.Add("?", txtFirma.value) iCmd.Parameters.Add("?", txtTelefon.value) iCmd.CommandText = "INSERT INTO Customers " iCmd.CommandText += "(CompanyName, Phone) " iCmd.CommandText += "VALUES (?,?)" iCmd.ExecuteNonQuery() End If Das liegt daran das bestimmte Provider das @ Parameter nicht unterstützen : Der OLE DB-.NET-Provider unterstützt keine benannten Parameter für die Übergabe von Parametern an eine SQL-Anweisung oder gespeicherte Prozedur, die von OleDbCommand aufgerufen wird, wenn CommandType auf Text festgelegt ist. In diesem Fall muss das Fragezeichen (?) als Platzhalter verwendet werden. Beispiel: SELECT * FROM Customers WHERE CustomerID = ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.