たとえば、私の発言は次のとおりです。
dbConnection.update("insert into transaction (isrecovered) values(?)", new Object[]{"N"});
上記のステートメントで、なぜ「N」を「N」として与えることができないのですか?
たとえば、私の発言は次のとおりです。
dbConnection.update("insert into transaction (isrecovered) values(?)", new Object[]{"N"});
上記のステートメントで、なぜ「N」を「N」として与えることができないのですか?
Java では、文字列は二重引用符で囲まれます。
Javachar
は一重引用符で囲みます。
AString
はObject
(サブクラスです) であり、配列にはオブジェクトが含まれている必要があります。Achar
はプリミティブであり、 ではありませんObject
。
上記は Java 構文のみに関係するものであり、データ テーブル内の列と混同しないでください。CHAR または VARCHAR タイプの列がある場合があります。これは、そこに格納されているものを指定するデータベースの方法です。
String
さらに、上記を SQL ステートメントを含むJava の内容と混同しないでください。SQL は Java とは異なる言語であり、異なる規則を使用します。異なるデータベース エンジンでは、一重引用符または二重引用符を使用して SQL の文字列定数を囲みます。さらに、選択したオプションによって異なります。典型的な常識的なアドバイスでは、特定のデータベースとその設定がそうでないことを意味しない限り、一重引用符を使用するように言われています。
このステートメントには2 つの言語( SQL と Java ) が混在しており、それぞれに異なる構文があります。
一重引用符付きの文字列を受け入れる言語 (PHP や SQL など) とそうでない言語 (Java など) があります。
PreparedStatement
どこで呼び出すことができるかなど、より安全なソリューションを使用することをお勧めします.setChar(...)