Zum Inhalt springen

VB.Net - Datenbank inhalt ändern


Empfohlene Beiträge

Geschrieben

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.
Geschrieben

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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...