Zum Inhalt springen

VB.Net - Datenbank inhalt ändern


ArimSlayer

Empfohlene Beiträge

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.
Link zu diesem Kommentar
Auf anderen Seiten teilen

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 = ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...