C# 使用参数化查询在Access中使用OldDb添加刻度为2的数字类型列
我试图使用C# 使用参数化查询在Access中使用OldDb添加刻度为2的数字类型列,c#,database,ms-access,oledb,C#,Database,Ms Access,Oledb,我试图使用Oledb命令在access数据库中添加一些列。列的类型不同,如货币(OleDbType.Currency)、带两位小数的浮点(OleDbType.Numeric)、整数(OleDbType.integer)等。下面的代码是我用来完成任务的代码。。。但每次它都会显示错误消息,说一些.....error in Field Definition..”或者当我更改代码时,它会显示“Syntax error in Column Definition..”等等 我还想添加一个选项,比如将NULL
Oledb
命令在access
数据库中添加一些列。列的类型不同,如货币(OleDbType.Currency
)、带两位小数的浮点(OleDbType.Numeric
)、整数(OleDbType.integer
)等。下面的代码是我用来完成任务的代码。。。但每次它都会显示错误消息,说一些.....error in Field Definition..”或者当我更改代码时,它会显示“Syntax error in Column Definition..”等等
我还想添加一个选项,比如将
NULL
值放在新添加的列中表的现有行中,对于以后添加的行,0(零)
将作为default
值插入代码>like太顽固,无法成功运行 如上文注释所述,在执行数据定义语言命令(如ALTER TABLE)时不能使用参数(在我所知的任何数据库中都是如此)。在特定情况下,可以对需要比例和精度值的列使用DECIMAL数据类型,并且在列名称和类型之间使用no=
@"ALTER TABLE ProductRecordsTable
ADD COLUMN [Price] DECIMAL (10,2),
[Shipped(NoS)] INT,
[Returned(NoS)] INT,
[Sold(NoS)] INT,
[Tax Percentage] DECIMAL (6,2)";
然后假设您希望将价格设置为非空。首先执行一个查询,将每一行设置为预定义的值
"UPDATE ProductRecordsTable SET Price = 0"
现在在列上设置NOTNULL值
@"ALTER TABLE ProductRecordsTable ALTER COLUMN [Price] DECIMAL (10,2) NOT NULL"
如果要设置默认值(对于某些列上的新记录
@"ALTER TABLE ProductRecordsTable ALTER COLUMN [Sold (NoS)] INT DEFAULT 0"
您不能在此上下文中使用参数。参数仅用于检索数据或更新数据。然后@Steve请给我一个命令,指定如何使用传统的非参数化OldDb命令设置比例值请阅读-总结是,这不是解决志愿者问题的理想方法,可能会适得其反为了获得答案。请不要将此添加到您的问题中。谢谢@halfer,真的非常感谢…我从来没有想到过这一点…由于您共享的链接包含了我,我真的很匆忙,我将尝试在我的问题中“避免”使用此类短语…我希望将我视为一个纯粹的新手(参见我的声誉:p)我会被原谅的:)再次谢谢你。谢谢@Steve,让我检查你的答案,如果它解决了我的问题,我会把它标记为答案。谢谢你。我想补充一件事,你能帮我增加额外的功能吗?我在问题代码部分的下面添加了。。“我还想添加一个选项,比如在新添加的列中的表的现有行中放入NULL值,对于以后添加的行,将插入0(零)作为默认值。”您可以执行一个查询,为datatable中已经存在的行设置默认值(在添加上面的列之后)如果您需要在某个列上设置NOTNULL,那么请为该列重新执行ALTER TABLE ALTER column with NOTNULL(当然,这需要前面为现有行设置值的命令)。谢谢@Steve,让我来试试……)对于默认值,有ALTER TABLE ADD列XXXX INT default 0
@"ALTER TABLE ProductRecordsTable ALTER COLUMN [Sold (NoS)] INT DEFAULT 0"