Toon posts:

[C#] DataAdapter Update Method - sp_executesql vraag

Pagina: 1
Acties:
  • 45 views sinds 30-01-2008

Verwijderd

Topicstarter
Hoi,

Alle eerst mijn excuses voor de onduidelijke titel. Ik kan helaas geen betere titel bedenken voor al mijn vragen met betrekking tot de DataAdapter update method.

Huidige situatie
code:
1
2
3
4
5
6
7
8
public void Update(DataSet aDataSet,string table)
{   
    if(_dataAdapters.ContainsKey(table))
    {
        
        ((SqlDataAdapter)_dataAdapters[table]).Update(aDataSet,table);
    }
}


in mijn data acces layer heb ik het bovenstaande method voor het invoeren van nieuwe gegevens. _dataAdapters is een hashTable die de verschillende DataAdapter opslaat. Bij het uitvoeren van het bovenstaande methode worden de gegevens van de desbetreffende table uitgevoerd. Onderwater wordt de sp_executesql storeprocedure aangeroepen. Na wat uitzoeken ben ik erachter gekomen dat deze geen system store procedure. Dit betekent dus dat je geen rechten kan toekennen aan een bepaalde gebruiker (of is hier een omweg voor?). Dus als ik nieuwe gegevens in een database wil invoeren dan moet ik in sqlserver de gebruiker rechten geven om gegevens in te kunnen voeren in bepaalde tabellen (insert permission).


Gewenste situatie
wat ik eigenlijk wil bereiken is zelf geschreven store procedure te gaan gebruiken door het bovenstaande methode een beetje aan te passen. Dit is wat ik nu heb:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public void Insert(DataSet aDataSet,string table,string InsertStoreProcedureName)
{
    
    if(_dataAdapters.ContainsKey(table))
    {
        SqlCommand insertCommand = new SqlCommand
                               (InsertStoreProcedureName,conn);
        insertCommand .CommandType=CommandType.StoredProcedure;
        [b]//problem parameterlist!!!![/b]
        ((OleDbDataAdapter)_dataAdapters[table]).InsertCommand=insertCommand;
                              conn.Open();
                              insertCommand.ExecuteNonQuery();
                                conn.Close();
    }
}


het probleem zit in de parameters die je aan een command object moet toevoegen. hoe kan ik dit voor elkaar krijgen? Kan ik dit met behulp van de dataset object bereiken? zo ja hoe krijg ik dit voorelkaar?

of is er toch een manier om rechten toe te kennen een specifieke gebruiker van de sp_executesql als een store procedure?

Groet b

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 16-04 11:36

pjvandesande

GC.Collect(head);

Je kunt toch gewoon de parameters van je insertCommand vullen.

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
SqlCommand insertCommand = new SqlCommand(InsertStoreProcedureName,conn);
insertCommand.Parameters.Add("@param1", DbType.String, "value");
((OleDbDataAdapter)_dataAdapters[table]).InsertCommand=insertCommand;

try
{
     conn.Open();
     insertCommand.ExecuteNonQuery();
}
finally
{
     conn.Close();
}

[ Voor 4% gewijzigd door pjvandesande op 08-12-2005 08:35 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 14:33
Dit is gewoon terug te vinden in de help en in iedere tutorial over .net / ado.net.
Kijk gewoon eens naar de Parameter collectie van het sqlcommand / oledbcommand (2 minuten in de MSDN bladeren).

Over die rechten: imo voeg je geen rechten toe op een stored procedure, maar op de tabel. Je kan enkel zeggen dat een gebruiker een SP al of niet mag uitvoeren.
Bij een tabel kan je zeggen: deze gebruiker / groep mag wel/niet gegevens inserten/updaten/deleten/verwijderen.

Maar, aangezien dit zo basic is, en je het zelf ook wel had kunnen vinden, gaat hier een slotje op

https://fgheysels.github.io/


Dit topic is gesloten.