亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用存儲在 ObservableCollection 中的值向數據庫添加新行?

如何使用存儲在 ObservableCollection 中的值向數據庫添加新行?

C#
ABOUTYOU 2022-12-04 11:11:30
所以我有兩個 ObservableCollections:ObservableCollection<Student> studentslistObservableCollection<Subject> subjectslist我將它們傳遞給我已經建立了與 sql 數據庫的整個通信的類。studentslist 包含以下傳遞的值:StudentsList.Add(new Student { IdStudent = newStudentId, Name = NameBox.Text, Surname = SurnameBox.Text, Index = IndexBox.Text })主題列表包含我的列表框中選中的復選框的值(我仍然不確定這是否正確):var selectedSubjects = SubjectList.Where(subjects => subjects.IsChecked == true);var selectedSubjectsCollection = new ObservableCollection<Subject>(selectedSubjects);這是我的主題類:public class Subject    {        public int IdSubject{ get; set; }        public string subject{ get; set; }        public bool IsChecked { get; set; }        public override string ToString()        {            return $"{subject}";        }    }現在在我的課堂上,負責與 sql 數據庫的連接,我創建了獲取這兩個集合的方法,并根據它們的值我想在數據庫中創建新記錄:public void addRecord(ObservableCollection<Student> studentslist, ObservableCollection<Przedmiot> subjectslist)        {            OpenConection();            //...            CloseConnection();        }在數據庫中我有學生表:Student(IdStudent, FirstName, LastName, IndexNumber)和主題表:Subject(IdSubject, Name)就我從數據庫中讀取數據而言,我不知道如何以正確的方式將這些值傳遞給數據庫中的相應值。
查看完整描述

1 回答

?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

我喜歡使用存儲過程來做這種事情,以最大限度地減少應用程序中的 T-SQL 代碼量。


一個例子是:


public static void InsertSubject(Przedmiot subject)

{

    using (SqlConnection conn = new SqlConnection("Connection String"))

    {

        try

        {

            SqlCommand command = new SqlCommand("dbo.InsertSubject", conn) { CommandType = CommandType.StoredProcedure };


            command.Parameters.Add(new SqlParameter("@IdSubject", subject.IdSubject));

            command.Parameters.Add(new SqlParameter("@Name", subject.subject));


            conn.Open();


            command.ExecuteNonQuery();

        }

        catch (Exception ex)

        {

            // handle exceptions

        }

    }

}

然后,您將擁有一個具有相同簽名的存儲過程來執行INSERT,即:


CREATE PROCEDURE dbo.InsertSubject

    @IdSubject int

    , @Name varchar(50)

AS


...


GO

如果你想傳遞整個集合,你可以foreach在上面的例子中實現一個循環。


我個人喜歡在每次插入時調用一次這些方法并將其作為int返回方法(例如),這樣我就可以傳遞一些數據,例如插入行的 ID。


查看完整回答
反對 回復 2022-12-04
  • 1 回答
  • 0 關注
  • 185 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號