2010-12-02 5 views
0

Если я хочу добавить некоторую информацию в базу данных SQL Server, должен ли я сделать это через DataSet и DataAdapter?Занимает ли DataSet слишком много места?

Идея состоит в том, что если моя база данных имеет 1-2 миллиона записей, разве моя память не будет занята ненужной с 1-2-мильными строками в DataSet, учитывая, что я хочу добавить только одну строку? Есть ли альтернатива?

ответ

2

Вы всегда можете создать простой старый ADO.NET параметризованный SqlCommand, содержащий простой оператор SQL INSERT, а также предоставить параметры и загрузить данные таким образом (ничего не нужно загружать, не имеет значения, сколько строк у вас уже есть - он будет просто работать):

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(); 
} 

Если у вас есть несколько строк для вставки, вы можете выполнить цикл через eg список объектов, задайте значения для нашего _cmdInsert для каждого объекта и выполните для каждой строки _cmdInsert.ExecuteNonQuery().

Конечно, если вы используете что-то вроде ORM (NHibernate, Linq-to-SQL, Entity Framework), эта работа может стать бесконечно легкой - просто вставьте новые объекты в свою коллекцию и сохраните их - ORM будет иметь дело с все подробные детали (и в основном делают этот код, который я показал выше, и выполняю его - более или менее).

7

Если вы только вставить строку, что не нужно ничего выборки в DataSet/DataAdapter. Вы добавляете строку, отправляете изменения, и соответствующая команда INSERT будет выполнена.

+0

и как получить последние 1000 строк базы данных? – Alex 2010-12-02 15:46:57