0

私はデータベースにチェックアウトの名前と{0}に入れられたチェック番号を持つ新しいテーブルを作成しようとしています。しかし、プログラムを実行すると、「Productlistvarchar(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);

ただし、実際には1つではなく、複数のパラメーター(、、など)が必要だと思います{0}。結果からどのSQLを期待していますか?{1}{2}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...>)

こんな感じになります。2番目以降のパラメーターで指定された値に注意してください。ここに示す定数の代わりに、定数またはいくつかの変数を使用できます。カンマの後に指定された値は、インデックス順のプレースホルダーを置き換えます。{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 に答える