मैं एक छोटे से फॉर्म का उपयोग कर उपयोगकर्ता का डेटा एकत्र करने और छात्र तालिका (डीबी) के कॉलम में डालने की कोशिश कर रहा हूं। मैं उपयोगकर्ता के लिंग को छोड़कर सभी जानकारी सम्मिलित करने में सक्षम था, जिसके लिए मैंने दो रेडियो बटन (radioButton_male और radioButton_female) का उपयोग किया था।

enter image description here

यहां सी # कोड का उपयोग किया गया है: डैशबोर्ड फॉर्म:

private void Btn_Register_Click(object sender, EventArgs e)
{
    Obj.StudentName = textBox_studentName.Text;
    Obj.Age = int.Parse(textBox_age.Text);
    Obj.Gender_m = radioButton_male.Text;
    Obj.Gender_f = radioButton_female.Text;
    Obj.Contact = int.Parse(textBox_contact.Text);

    bool success = Obj.studentAdd(Obj);
    if (success)
    {
        MessageBox.Show("Saved");
    }
}

विद्यार्थी वर्ग

public string StudentName { get; set; }
public int Age { get; set; }
public string Gender_m { get; set; }
public string Gender_f { get; set; }
public int Contact { get; set; }

_

public bool studentAdd(Student obj)
        {
            SqlConnection conn = new SqlConnection(myconnstring);
            bool success = false;
            
            try
            {
                string sql = "INSERT INTO Students(FullName, Gender, ContactNo, Age) VALUES (@FullName, @Gender, @ContactNo, @Age)";
                SqlCommand cmd = new SqlCommand(sql, conn);
                cmd.Parameters.AddWithValue("@FullName", StudentName);
                cmd.Parameters.AddWithValue("@Gender", Gender_m);
                cmd.Parameters.AddWithValue("@Gender", Gender_f);
                cmd.Parameters.AddWithValue("@ContactNo", Contact);
                cmd.Parameters.AddWithValue("@Age", Age);
                conn.Open();
                int row = cmd.ExecuteNonQuery();

                if (row > 0)
                {
                    success = true;
                }
                else
                {
                    success = false;
                }


            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            } finally
            {
                conn.Close();
            }
            
            return success;
        }

मैं समझता हूं कि मैं केवल एक कॉलम में दोनों प्रविष्टियों को असाइन नहीं कर सकता, लेकिन मैं इफ एल्स या किसी अन्य तरीके का उपयोग करके इसे ठीक से सेट करने में असमर्थ हूं। आशा है कि आप सहायता कर सकते हैं। धन्यवाद।

0
Mante 4 सितंबर 2021, 08:50

2 जवाब

सबसे बढ़िया उत्तर

आप प्रथम और अंतिम नाम रखने के लिए तालिका डिज़ाइन को बदलने पर विचार कर सकते हैं, लिंग को एक बिट के रूप में सेट कर सकते हैं जिसे एक स्ट्रिंग के रूप में व्यक्त किया जा सकता है और शायद उनकी जन्म तिथि एकत्र करने से आयु की गणना की जा सकती है।

व्यक्ति वर्ग

public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public bool? Gender { get; set; }
    public string GenderType => Gender != null && Gender.Value ? "Male" : "Female";
    public DateTime? BirthDay { get; set; }
    public string PhoneNumber { get; set; }
    public override string ToString() => $"{FirstName} {LastName}";
}

डेटा देखने के लिए (आमतौर पर हम ऐप में फॉर्मेट करते हैं)। ध्यान दें कि इस मामले में उम्र की गणना सटीक नहीं हो सकती है, डेटाबेस तालिका में संग्रहीत करने के बजाय रनटाइम पर आयु प्राप्त करने के बारे में एक विचार प्राप्त करना पर्याप्त है क्योंकि समय के साथ उम्र गलत होगी। साथ ही, फ़ोन नंबर एक विशिष्ट प्रारूप ग्रहण करता है जो कि प्रारूप नहीं दिए जाने पर आसानी से विफल हो सकता है।

SELECT Id, 
       FirstName, 
       LastName,
       CASE
           WHEN Gender = 1
           THEN 'Male'
           ELSE 'Female'
       END AS Gender, 
       FORMAT(BirthDay, 'MM/dd/yyyy') AS BirthDay, 
       CONVERT(int,ROUND(DATEDIFF(hour,BirthDay,GETDATE())/8766.0,0)) AS Age,
       SUBSTRING(phoneNumber, 1, 3) + '-' + 
       SUBSTRING(phoneNumber, 4, 3) + '-' + 
       SUBSTRING(phoneNumber, 7, 4) AS PhoneNumber
FROM dbo.People;

टेबल डिज़ाइन (कॉलम का आकार NVARCHAR (MAX) से कम हो सकता है)

CREATE TABLE dbo.People
(Id          INT IDENTITY(1, 1) NOT NULL, 
 FirstName   NVARCHAR(MAX) NULL, 
 LastName    NVARCHAR(MAX) NULL, 
 Gender      BIT NULL, 
 BirthDay    DATETIME2(7) NULL, 
 PhoneNumber NVARCHAR(MAX) NULL, 
 CONSTRAINT PK_People PRIMARY KEY CLUSTERED(Id ASC)
)

enter image description here

1
Karen Payne 4 सितंबर 2021, 11:08

आपके डिज़ाइन में केवल एक एकल फ़ील्ड होना चाहिए जो छात्र के लिंग को रिकॉर्ड करे:

public string StudentName { get; set; }
public int Age { get; set; }
public string Gender { get; set; }
public int Contact { get; set; }

जब आप अपने UI से फ़ॉर्म डेटा एकत्र करते हैं, तो आपको चुने गए रेडियो बटन के आधार पर 'M' या 'F' असाइन करना चाहिए।

2
Tim Biegeleisen 4 सितंबर 2021, 05:54