【发布时间】:2013-03-23 02:44:06
【问题描述】:
这是我现在的代码:
private static MySqlConnection conn = null;
private static MySqlDataAdapter AccountsDa = null;
private static MySqlCommandBuilder AccountsCb = null;
AccountsDa = new MySqlDataAdapter("SELECT * FROM accounts", conn);
AccountsCb = new MySqlCommandBuilder(AccountsDa);
Accounts = new DataTable();
AccountsDa.Fill(Accounts);
我正在尝试弄清楚如何定义列默认值,而无需手动进行 如果我这样做:
DataColumn col = new DataColumn();
col.ColumnName = "id";
col.AllowDBNull = false;
col.DataType = System.Type.GetType("System.Int32");
col.DefaultValue = 0;
Accounts.Columns.Add(col);
对于每个列它都可以正常工作,但是当表格被填满时,我如何让它自动设置数据库中的默认值。我希望我不必手动定义 30 列。
我尝试了 Accountsda.FillSchema(Accounts, SchemaType.Source); 它设置了允许空值和自动增量,但不是默认值
稍后在数据表中添加一行时会出现问题,有时我只需要为一列设置值,让其余列使用它们的默认值。
我可以输入 180 行代码来手动定义插入行的默认值,但必须有一种方法可以在创建/填充数据表时从数据库中获取这些值
我正在使用内存数据表,因为有时数据仅存在 2 分钟,然后再次被删除,因为这是用于在线 rts 游戏的专用服务器。因此,为了在数据库中保存命中,我使用数据表并对其进行操作并每 10 分钟刷新一次,这样我每 10 分钟对数据库只有 1,000 次点击,而不是可能有 40,000 次点击
【问题讨论】:
-
是的,但表中的所有内容在 mysql 数据库本身中都有一个默认值,因此任何内容都不会返回 null。我只是想找出一种比使用 180 行代码更简单的方法来设置 30 个默认值,以便添加到表中
-
我看到你正在从 sql 加载数据表并且你说每一列都会有一个值那么你为什么需要设置默认值?您可以做的是使用 MySQL Show Columns 获取列列表和默认值并遍历它并设置默认值
-
用于添加到数据表时。有时我只需要设置 1 个值并让其余部分接受它们的“默认”值,而现在当我向其中添加一行但不设置所有列值时,我在使用表时遇到异常因为有些列是空的
-
我正在为使用 websockets 的在线网络游戏使用专用服务器,当玩家创建初始城市时,首先需要设置的只是城市名称,所有其他值都应该是它们的默认值,并且有其中大约 30 多个,但目前就像我说的那样,它将它们设置为 null 而不是 0 或 50 或任何 mysql“默认”值是
-
当稍后将数据从表中拉回并将其分配给一个类时,它会引发异常,因为例如 usercity.population 是一个 int 但表中的数据为空,它会抛出一个加载数据时出现异常