0

たとえば、私の発言は次のとおりです。

dbConnection.update("insert into transaction (isrecovered) values(?)", new Object[]{"N"});

上記のステートメントで、なぜ「N」を「N」として与えることができないのですか?

4

3 に答える 3

2

Java では、文字列は二重引用符で囲まれます。

Javacharは一重引用符で囲みます。

AStringObject(サブクラスです) であり、配列にはオブジェクトが含まれている必要があります。Acharはプリミティブであり、 ではありませんObject

上記は Java 構文のみに関係するものであり、データ テーブル内の列と混同しないでください。CHAR または VARCHAR タイプの列がある場合があります。これは、そこに格納されているものを指定するデータベースの方法です。

Stringさらに、上記を SQL ステートメントを含むJava の内容と混同しないでください。SQL は Java とは異なる言語であり、異なる規則を使用します。異なるデータベース エンジンでは、一重引用符または二重引用符を使用して SQL の文字列定数を囲みます。さらに、選択したオプションによって異なります。典型的な常識的なアドバイスでは、特定のデータベースとその設定がそうでないことを意味しない限り、一重引用符を使用するように言われています。

于 2013-04-26T16:47:59.423 に答える
1

このステートメントには2 つの言語( SQL と Java ) が混在しており、それぞれに異なる構文があります。

一重引用符付きの文字列を受け入れる言語 (PHP や SQL など) とそうでない言語 (Java など) があります。

PreparedStatementどこで呼び出すことができるかなど、より安全なソリューションを使用することをお勧めします.setChar(...)

于 2013-04-26T16:54:26.737 に答える