0

我正在尝试在数据库中创建一个新表,该表具有结帐名称和我放入 {0} 的支票号码。但是当我运行程序时,它会出现“Productlist varchar(50)”标题中显示的错误

SQLiteCommand tableCreateCommand = myConnection.CreateCommand();
tableCreateCommand.CommandText = string.Format("create table Checkout{0} (ID int, Productlist varchar{0}, Date varchar {0}, Time varchar (50), Total double)");
tableCreateCommand.ExecuteNonQuery();
4

4 回答 4

3

您正在调用string.Format包括{0}在各个地方,表明您希望替换占位符......但您没有提供占位符值。

你想要这样的东西:

tableCreateCommand.CommandText = string.Format("...", checkNumber);

但是,我怀疑您实际上需要多个参数({0},等) {1}{2}而不仅仅是一个。您期望从结果中得到什么 SQL string.Format

于 2012-04-27T18:02:03.697 回答
3

您没有为 String.Format 中的占位符指定任何值。

string.Format("create table Checkout{0} (ID int, Productlist varchar{0}, 
Date varchar {0}, Time varchar (50), Total double)",  <you need to specify  
the list of values for place holders here...>)

它应该是这样的。请注意从第二个参数开始指定的值。您可以使用常量或某个变量来代替此处显示的常量。逗号后指定的值将替换索引顺序中的占位符。{0}将使用值123456{1}将使用50{2}将使用65并将{3}使用75

string.Format("create table Checkout{0} (ID int, Productlist varchar({1}), 
Date varchar({2}), Time varchar ({3}), Total double)", 123456, 50, 65, 75)

如果您需要为结帐指定的 varchar 使用相同的占位符,则应该是这样的。我不确定这是否是您的意图。这里所有占位符 {0} 将使用相同的值 100。

string.Format("create table Checkout{0} (ID int, Productlist varchar({0}), 
Date varchar({0}), Time varchar (50), Total double)", 100)
于 2012-04-27T18:02:15.343 回答
0

您尚未将字符串传递给 string.Format,它需要放入您的 {0} 占位符。你错过了一个变量吗?

...string.Format("your long format string {0}", someMissingStringVar);
于 2012-04-27T18:02:15.547 回答
0

在此示例中,您String.Format使用包含占位符{0}但未提供任何参数的字符串进行调用。您需要删除占位符或提供参数以填充{0}插槽

如果您想从字面上放入{0}字符串,请不要使用String.Format或通过{{0}}.

于 2012-04-27T18:03:07.113 回答