2015-05-27 6 views
0

У меня есть небольшая проблема с созданием новой таблицы в базе данных. Я создаю новую таблицу в моем объекте DataSet, но эта таблица не создается в физической базе данных. Таблица создается только в кеше. Зачем?Почему DataSet не создает новую таблицу в базе данных?

Мой код:

SqlCeConnection con = new SqlCeConnection(@"Data Source=C:\Projects\ConsoleApplication6\ConsoleApplication6\Data.sdf"); 
SqlCeDataAdapter sCEdata = new SqlCeDataAdapter("select * from [Cats]", con); 
DataSet ds = new DataSet(); 
sCEdata.Fill(ds); 

DataColumn ID = new DataColumn("ID", typeof(int)); 
ID.AllowDBNull = false; 
ID.AutoIncrementSeed = 0; 
ID.AutoIncrement = true; 
ID.AutoIncrementStep = 1; 
ID.ReadOnly = true; 
ID.Unique = true; 
DataColumn Name = new DataColumn("Name", typeof(string)); 
DataColumn Owner = new DataColumn("Owner", typeof(string)); 
DataColumn Note = new DataColumn("Note", typeof(string)); 

DataTable Cats2 = new DataTable("Cats2"); 
Cats2.Columns.AddRange(new DataColumn[]{ID, Name, Hozain, Note}); 

DataRow dr1 = Cats2.NewRow(); 
DataRow dr2 = Cats2.NewRow(); 
DataRow dr3 = Cats2.NewRow(); 
dr1["Name"] = "Pavel"; dr1["Owner"] = "Sergey"; dr1["Note"] = "Starii"; 
dr2["Name"] = "Gleb"; dr2["Owner"] = "Inga"; dr2["Note"] = "Tupaya"; 
dr3["Name"] = "Dusia"; dr3["Owner"] = "Olga"; dr3["Note"] = "Zlaya"; 

Cats2.Rows.Add(dr1); 
Cats2.Rows.Add(dr2); 
Cats2.Rows.Add(dr3); 

dr2["Note"] = "Guzelle"; 

ds.Tables.Add(Cats2); 

SqlCeCommandBuilder build = new SqlCeCommandBuilder(sCEdata); 

sCEdata.Update(ds); 
+4

Наборы данных не делают этого. – SLaks

+1

Как вы ожидаете, что база данных будет знать, что вы создаете без какой-либо действительной команды Sql, также вы делаете только Select, который возвращает данные объекту, а не Create .. где есть команда Create Table ..? Я думаю, вам нужно переосмыслить свой подход и записать шаги в отношении того, что вы хотите сделать. Также посмотрите, как использовать команду CreateTable в sql – MethodMan

+2

здесь хорошее место, чтобы начать чтение @polyakov_s http: // stackoverflow. com/questions/1348712/create-a-sql-server-table-from-ac-sharp-datatable – MethodMan

ответ

1

База данных только знает, что должен что-то изменить, когда вы используете команду SQL. Вы можете создать столько наборов данных, сколько захотите, удалить и вставить данные, но База данных останется прежней, пока вы не скажете ей изменить с помощью команды SQL.

Смежные вопросы