Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VB.Net - Datenbank inhalt ändern

Empfohlene Antworten

Veröffentlicht

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.

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.