안녕하세요. 나는 문제가있다. 나는 데이터베이스에서 패키지에 관한 정보를 얻고 그 패키지에 연결된 소프트웨어를 얻고 싶다.제약 조건을 활성화하지 못했습니다. 하나 이상의 행에 null이 아니거나 고유하거나 외부 키 제약 조건을 위반하는 값이 있습니다.
내 데이터베이스는 다음과 같다.
이protected void BtnPackageSelect_Click(object sender, EventArgs e)
{
SoftwareTableAdapters.PackageTableAdapter p = new SoftwareTableAdapters.PackageTableAdapter();
SoftwareTableAdapters.SoftwareTableAdapter s = new SoftwareTableAdapters.SoftwareTableAdapter();
foreach(var item in p.GetSelectedPackage(DropDownList1.SelectedValue))
{
string PackageName = item.PackageName;
int PackageID = item.PackageID;
string PackageDiscription = item.PackageDiscription;
Label1.Text = "Name: " + PackageName;
Label1.Visible = true;
Label2.Text = "ID: " + PackageID;
Label2.Visible = true;
Label3.Text = "Discription: " + PackageDiscription;
Label3.Visible = true;
ListBox2.Visible = true;
foreach (var software in s.GetSelectedIndexSoftware(PackageID)) <----- this is there the error come.
{
ListBox2.Items.Add(software.SoftwareName);
}
}
}
이 방법 GetSelectedIndexSoftware (packageID)는 다음과 같습니다 :
SELECT SoftwareName
FROM Software
WHERE (PackageID = @PackageID)
내가 이제 데이터베이스에있어 모두는 다음과 같습니다
create table Package
(
PackageID int identity,
PackageName varchar(50) not null,
PackageDiscription varchar(max) not null,
primary key (PackageID)
)
create table Software
(
SoftwareID varchar(50) not null,
SoftwareName varchar(50) not null,
DownloadPath varchar(100) not null,
PackageID int,
Primary key (SoftwareID),
Foreign Key (PackageID) references Package on delete cascade on update cascade
)
는 내가 뭘하려고 이것이다
insert into Package values('1', '1')
insert into Package values('2', '2')
insert into Software values('1', '1', '1', null)
insert into Software values('2', '2', '2', null)
insert into Software values('3', '3', '3', null)
insert into Software values('4', '4', '4', null)
w 여기에 모든 소프트웨어의 널 (null)은 상당히 새로운 코딩 1
오전 업데이트되었습니다 그래서 나는 잃어버린 조금 .. 사람이 문제
------ 편집 한을 찾기 위해 나를 도울 수 hopeone --- - 이제 null을 허용하지 않도록 소프트웨어 생성을 변경하려고 시도한 다음 패키지에 아직 링크되지 않은 모든 소프트웨어가 링크 될 곳에 처음 연결되지 않은 패키지를 만듭니다. 생성시 PackageID에 1이 생성됩니다. 도움이되지 않았습니다.
------ EDIT 2 ----- 이제 소프트웨어 테이블에 외래 키가 없도록했습니다. 어느 쪽이든
왜 null로 삽입합니까? 왜냐하면 소프트웨어가 만들어지면 패키지가 아직 없기 때문입니다. 사용자가 collum이 설정된 패키지에 소프트웨어를 추가하려고 할 때 처음입니다. – MrKanin
그런 다음 null을 확인하도록 코드를 변경해야합니다. 예를 들면 다음과 같습니다. var softwares = s.GetSelectedIndexSoftware (PackageID); if (softwares! = null) {foreach (소프트웨어의 소프트웨어) {...}} –
안녕하세요, 저는 방금 해결책을 시도했습니다. 그러나 그것은 일을 didnt한다. s.GetSelecteIndexSoftware (PackageID)의 오류 ocours처럼 보입니다. 내가 tryed 디버그, 그리고 그 packageID 내가 매개 변수로 사용할 때 유효한 하나입니다. 그리고 나는 데이터베이스에서 그것을 알고있다 – MrKanin