【问题标题】:Why doesn't DataSet create a new table in the database?为什么 DataSet 不在数据库中创建新表?
【发布时间】:2015-08-09 23:27:12
【问题描述】:

我在数据库中创建新表时遇到了一个小问题。我在我的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);

【问题讨论】:

  • 数据集不这样做。
  • 在没有任何有效的 Sql 命令的情况下,您如何期望数据库知道您正在创建的内容,而且您只是在执行一个 Select,它将数据返回到一个对象而不是 Create .. Create Table 命令在哪里。 .?我认为您需要重新考虑您的方法并写下您想要做什么的步骤.. 还要查看如何在 sql 中使用 CreateTable 命令
  • 这里是开始阅读的好地方@polyakov_s stackoverflow.com/questions/1348712/…
  • 我认为,DataAdapter 仅使用 DataSet 对象更新物理数据库。例如,我在不使用 sql 命令的情况下在表中添加新行,并且它可以正常工作。对不起,我来自俄罗斯,用英文写得不好,但理解))

标签: c# database


【解决方案1】:

数据库只知道当您使用 SQL 命令时必须更改某些内容。您可以创建任意数量的数据集、删除和插入数据,但数据库会保持不变,直到您通过 SQL 命令告诉它进行更改。

【讨论】:

    猜你喜欢
    • 2019-04-15
    • 1970-01-01
    • 2021-06-05
    • 2011-04-07
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多