0

3 層ソリューション (またはそれが呼ばれるもの) を使用して、MySql データベースに挿入しようとしています。

私はこれを MS-sql データベースで何度も実行しましたが、非常にうまく機能しました。

しかし、挿入しようとすると、IDをnullにすることはできません。データベースがそれを処理すると思いました。コードに挿入を直接記述し、MySqlCommand と executeNonQuery を使用すると、うまく機能します。

MySql で BLL と DAL を使用することはできませんか?

エラーメッセージ:

System.Data.NoNullAllowedException: 列 'GiftID' は null を許可しません。System.Data.DataColumn.CheckNullable (DataRow 行) で System.Data.DataColumn.CheckColumnConstraint (DataRow 行、DataRowAction アクション) で System.DataTable.RaiseRowChanging (DataRowChangeEventArgs args、DataRow eRow、DataRowAction eAction、Boolean fireEvent) システムで.Data.DataTable.SetNewRecordWorker(DataRow 行、Int32 提案レコード、DataRowAction アクション、ブール値 isInMerge、Int32 位置、ブール値 fireEvent、Exception& deferredException) で System.Data.DataTable.InsertRow(DataRow 行、Int32 提案 ID、Int32 位置、ブール値 fireEvent) c:\Users\IT\AppData\Local\Temp\Temporary ASP.NET Files\payex\45bd406a\10c84208\App_Code.cyqhjqo7 の PayEx.payexusersDataTable.AddpayexusersRow(payexusersRow 行) の System.Data.DataRowCollection.Add(DataRow 行) .1.cs:

私のコード:

[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Insert, true)]
public bool AddPayExUser(string Firstname, string Lastname, string Company, string Address, string Zip, string City, string Phone, string Email, byte ContactMe, uint Amount, uint TransactionNumber, byte Anonymous, string Currency)
{
    PayEx.payexusersDataTable puTable = new PayEx.payexusersDataTable();
    PayEx.payexusersRow puRow = puTable.NewpayexusersRow();

    puRow.Firstname = Firstname;
    puRow.Lastname  = Lastname;
    puRow.Company = Company;
    puRow.Address = Address;
    puRow.Zip = Zip;
    puRow.City = City;
    puRow.Phone = Phone;
    puRow.Email = Email;
    puRow.ContactMe = ContactMe;
    puRow.Amount = Amount;
    puRow.TransactionNumber = TransactionNumber;
    puRow.Anonymous = Anonymous;
    puRow.Currency = Currency;


    puTable.AddpayexusersRow(puRow);
    int rowsAffected = Adapter.Update(puTable);

    return rowsAffected == 1;
}
4

2 に答える 2

1
System.Data.NoNullAllowedException: Column 'GiftID' does not allow nulls. at 

コードの外観から、パラメーターを関数に渡すのを忘れていますGiftIDが、テーブル行で想定されています (null にすることはできません)。

したがって、例外です。上記のコードで設定するか、MySQL データベースでデフォルト値を定義してください。

于 2009-05-25T16:04:26.260 に答える
1

編集: このコメントは、GiftId が主キーであるテーブルに挿入していることを前提としていますが、これはありそうにありません。もしそうなら、Eoin Campbellの答えはもっと理にかなっています!

GiftId が AUTO_INCREMENT 列であるかどうかを確認します。これは、MySQL の ID に相当します。

次のような ID として列を再作成できます。

ALTER TABLE Gifts
         DROP COLUMN GiftId;

ALTER TABLE items
         ADD COLUMN GiftId INT NOT NULL AUTO_INCREMENT FIRST;
于 2009-05-25T16:04:53.140 に答える