Tutaj jest bardzo prosty przykład ASP.NET stosując sparametryzowanego zapytanie poprzez OleDb w VB:
Defalult.aspx
<%@ Page Title="Home Page" Language="vb" MasterPageFile="~/Site.Master" AutoEventWireup="false"
CodeBehind="Default.aspx.vb" Inherits="vbOleDbSite._Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<p>
First Name: <asp:TextBox ID="FirstName" runat="server"></asp:TextBox><br />
Last Name: <asp:TextBox ID="LastName" runat="server"></asp:TextBox><br />
<br />
<asp:Button ID="btnAddUser" runat="server" Text="Add User" />
<br />
Status: <span id="spanStatus" runat="server">Awaiting submission...</span>
</p>
</asp:Content>
Default.aspx.vb
Public Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Protected Sub btnAddUser_Click(sender As Object, e As EventArgs) Handles btnAddUser.Click
Dim newID As Long = 0
Using con As New OleDb.OleDbConnection
con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\__tmp\testData.accdb;"
con.Open()
Using cmd As New OleDb.OleDbCommand
cmd.Connection = con
cmd.CommandText = "INSERT INTO UsersTable (LastName, FirstName) VALUES (?, ?);"
cmd.Parameters.AddWithValue("?", Me.LastName.Text)
cmd.Parameters.AddWithValue("?", Me.FirstName.Text)
cmd.ExecuteNonQuery()
End Using
Using cmd As New OleDb.OleDbCommand
cmd.Connection = con
cmd.CommandText = "SELECT @@IDENTITY"
newID = cmd.ExecuteScalar()
End Using
con.Close()
End Using
Me.spanStatus.InnerText = "User """ & Me.FirstName.Text & " " & Me.LastName.Text & _
""" has been added (ID: " & newID.ToString() & ")."
End Sub
End Class
Notatki:
Parametryzowane zapytanie używa "?" zamiast "prawdziwych" nazw parametrów, ponieważ Access OLEDB ignoruje nazwy parametrów. Parametry muszą być zdefiniowane w dokładnej kolejności, w jakiej pojawiają się w.
Tabela [Tabela użytkowników] ma klucz podstawowy AutoNumber
, a SELECT @@IDENTITY
pobiera nową wartość klucza utworzoną przez instrukcję INSERT INTO
.
Czy to pomoże? ... SQL injection w bazie danych MS Access [Duplikat] http://stackoverflow.com/questions/9392330/sql-injection-in-ms-access-database ... – Chris
Uważam, że musisz przeczytać i przejść z tego tematu http://msdn.microsoft.com/en-us/library/aa139977(office.10).aspx – Aristos
@ Chciałem tylko chronić moją bazę danych przed iniekcją sql, więc gdy dane wejściowe użytkownika w polu tekstowym zakładają, że jest to formularz logowania, pole tekstowe username podczas wprowadzania użytkownika ", można obsłużyć błąd – NPE