SQLDataSource Insert   zodpovězená otázka

ASP.NET WebForms, Databáze

Dobrý večer,

potřeboval bych radu s následujícím problém.Ve stránce mám SQLDataSource následujícího tvaru :

         <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
             ConnectionString="<%$ ConnectionStrings:ConnectionString %>"  
             InsertCommand="INSERT INTO [Comments] ([User], [Subject], [Datetime], [Text], [PageID]) VALUES (xxxx, @Subject, GETDATE(), @Text, @PageID)">
             <InsertParameters>
                 <asp:Parameter Name="Subject" Type="String" />
                 <asp:Parameter Name="Text" Type="String" />
                 <asp:QueryStringParameter Name="PageID" QueryStringField="id" Type="Int32" />
             </InsertParameters>
         </asp:SqlDataSource>

Ve vlastnosti InsertCommand mám SQL dotaz pro přidání komentáře a za xxxx bych potřeboval dosadit ID uživatele webu. Toto ID mám na mé stránce dostupné pod proměnnou UserID. Zajímalo by mně, jestli můžu přímo ve vlastnosti InsertCommand říci, že za první hodnotu chci dosadit hodnotu proměnné UserID.

Díky za veškeré odpovědi...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Proč si tam na to neuděláte další InsertParametr názvu UserId a nevyplníte ho z kódu?

Něco jako

SqlDataSource1.InsertParameters["UserId"].DefaultValue = id_uživatele

Anebo ještě lépe napište si vlastní parametr, který bude ID uživatele přímo vracet. Stačí vytvořit třídu, která dědí z Parameter, a do nějaké metody Evaluate nebo jak se jmenuje dát kód, který vrátí ID aktuálního uživatele.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Moc díky,

ovšem, nakonec jsem to vyřešil tak, že jsem v metodě Load komponenty SQLDataSource nadefinoval SQL dotaz pomocí :

 SQLDataSource1.InsertCommand = "INSERT INTO [Comments] ([User], [Subject],..."

...kde již nebyl problém dosadit hodnotu z proměnné tam, kde jsem potřeboval. Nejsem si jist, jak moc je toto řešení ideální, ale funguje to, takže jsem spokojený.

Díky za odpověď

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

To, že to funguje, dost často nestačí. Konkrétně skládání SQL dotazů bych se vyhnul vždycky, pokud to jde jinak (a to tady jde).

Pokud tam dosazujete nějaké číslo, tak je to ještě v pohodě, ale hlavně takhle nikdy do SQL dotazů nedosazujte texty, jinak si koledujete o útok SQL injection.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Máte pravdu, moc děkuju...

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback