主キーフィールドの値を挿入するだけで、データベーステーブル(MySQL、Oracle、MSSQL)に新しいレコードを作成/挿入する必要があります。ただし、null値を許可しない列がテーブルにある場合、これは機能しません。null値を許可しないテーブル列を確認するにはどうすればよいですか。
質問する
3234 次
5 に答える
4
たとえば起動時にテーブルに対してリクエストを実行してから、テーブルのメタデータを確認できます。
ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM myTable");
ResultSetMetaData rsmd = rs.getMetaData();
int nullable = rsmd.isNullable(1);
if(nullable == ResultSetMetadata.columnNullable) {
System.out.println("Nullable");
}
于 2012-08-01T11:52:06.767 に答える
3
DatabaseMetadataオブジェクト、特にgetAttributes()メソッドを確認してください。
NULLABLE int=>NULLが許可されているかどうか
attributeNoNulls - might not allow NULL values attributeNullable - definitely allows NULL values attributeNullableUnknown - nullability unknown
私は(しかし)あなたのアプリケーションは可能な限り多くのことを知っているべきだと思います。データの制約。データベースはこれらの制約で自身を保護しますが、アプリケーションは(可能な場合)この情報を認識して尊重する必要があります。
于 2012-08-01T11:45:55.820 に答える
1
これは機能するはずです: ResultSetMetaData.isNullable
public int isNullable(int column)
throws SQLException
Indicates the nullability of values in the designated column.
Parameters:
column - the first column is 1, the second is 2, ...
Returns:
the nullability status of the given column; one of columnNoNulls, columnNullableor columnNullableUnknown
Throws:
SQLException - if a database access error occurs
于 2012-08-01T11:48:45.253 に答える
0
私が正しければ、プログラム内のテーブルをテストする方法を探しています(手動ではないと思います)...
次のように各テーブルをテストします。
ステップ1:テーブルにnull値のレコードを挿入してみます。
ステップ2:例外が発生した場合は、それをキャッチして、他のテーブルでこれらのステップを続行します。
それらのテーブルにマークを付けるか、テーブルの名前を含むリストを作成できます。
于 2012-08-01T11:51:56.337 に答える
0
ResultSetMetaDataも確認できます。javadoc
ResultSetMetaData.columnNullable
ResultSetMetaData.columnNoNulls
ResultSetMetaData.columnNullableUnknown
よろしく
于 2012-08-01T11:58:34.540 に答える