Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用参数化查询在Access中使用OldDb添加刻度为2的数字类型列_C#_Database_Ms Access_Oledb - Fatal编程技术网

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"