2010-12-02 9 views
0

Si je souhaite ajouter des informations à ma base de données SQL Server, dois-je le faire via un DataSet et un DataAdapter? L'idée est que si ma base de données a 1-2 millions d'entrées, ma mémoire ne sera-t-elle pas inutile avec les lignes de 1 à 2 mil du DataSet étant donné que je veux ajouter une seule ligne? Y a-t-il une alternative?Le DataSet occupe-t-il trop d'espace?

Répondre

2

Vous pouvez toujours créer un ADO.NET simple paramétré SqlCommand contenant une instruction SQL INSERT simple, fournir des paramètres et charger les données de cette façon (rien n'a besoin d'être chargé, peu importe le nombre de lignes que vous avez déjà - ça va juste fonctionner):

string insertStmt = "INSERT INTO dbo.YourTable(col1, col2, ...., colN) " + 
    "VALUES(@Value1, @Value2, ...., @ValueN)"; 

using(SqlConnection _con = new SqlConnection(-your-connection-string-here)) 
using(SqlCommand _cmdInsert = new SqlCommand(insertStmt, _con))  
{ 
    // define the parameters for your query 
    _cmdInsert.Parameters.Add("@Value1", SqlDbType.Int); 
    ....... 

    // set the values 
    _cmdInsert.Parameters["@Value1"].Value = 4711; 
    ..... 

    _con.Open(); 
    int rowsInserted = _cmdInsert.ExecuteNonQuery(); 
    _con.Close(); 
} 

Si vous avez plusieurs lignes à insérer, vous pouvez faire une boucle sur par exemple une liste d'objets, définissez les valeurs de _cmdInsert pour chaque objet et exécutez le _cmdInsert.ExecuteNonQuery() pour chaque ligne. Bien sûr, si vous utilisez quelque chose comme un ORM (NHibernate, Linq-to-SQL, Entity Framework), ce travail peut être infiniment plus facile - il suffit d'insérer de nouveaux objets dans votre collection et de les enregistrer - l'ORM traitera tous les détails nitty-graveleux (et fondamentalement faire ce code que j'ai montré ci-dessus et l'exécuter - plus ou moins).

7

Si vous ne vous insérez une ligne, qui ne doivent pas chercher quoi que ce soit dans le DataSet/DataAdapter. Vous ajoutez la ligne, soumettez les modifications et la commande INSERT appropriée sera exécutée.

+0

et comment puis-je récupérer les 1000 dernières lignes d'une base de données? – Alex

+3

@Badescu: Cela me semble être une question entièrement distincte. D'une part, "last" dépend de l'ordre de tri ... –