الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ارجو الساعده في ادخال بيانات لقاعدة البيانات

بدأه Mejo Magic في 21 يناير 2012 · 4 رد · 476 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخواني انا عندي مشكلة ببرنامج يقرا من ملف تكست ويستخرج منها البيانات ويضعها بقاعدة البيانات

كانت عندي مشكلة باستخراج البيانات من ملف التكست وانتهيت منها الحمدالله باقي بس ارسل البيانات بعد الاستخراج لقاعدة البيانات

بعد ماكتبت الكود وحطيت امر EXECUTENONQUERY

لاحظة ان البرنامج قاعد يرسل البيانات لقاعدة البيانات لكن يكرر لي السطر الاول على عدد البيانات الموجوده يعني تكون مثلن عدد الصفوف 19 يكرر السطر الاول 19 مره بقاعدة البيانات

والشي اللي يقهر انو لمى استعرض البيانات في MESSAGEBOX يعطيني جميع البيانات سطر سطر وتكون صحيحه بس لمى ارسلها للداتا يكرر نفس السطر الاول على حسب عدد الصفوف

وضعة جملة executenonquery داخل الفور لووب وخارجها بس مافي فايده

ياليت الحل

الكود

string path = @"C:\Documents and Settings\Administrator\My Documents\MASTER.PRD120108.TXT";
            StreamReader sr = new StreamReader(path);
            string connection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Administrator\My Documents\testENV\InsertData\InsertData\aa\db1.mdb;Persist Security Info=True";
            OleDbConnection con = new OleDbConnection(connection);
            OleDbCommand com = new OleDbCommand();
            com.Connection = con;
            com.CommandText = "INSERT INTO mr (ORGX,ACCT,LOGO) VALUES (@ORGX,@ACCT,@LOGO)";
            string lines = "";
            string ORGX = "";
            string ACCT = "";
            string LOGO = "";
            int count = 0;
            string obj = "";
            try
            {
                con.Open();
                  while ((lines = sr.ReadLine()) != null)
                  {
                      ORGX = lines.Substring(0, 3);
                      ACCT = lines.Substring(3, 19);
                      LOGO = lines.Substring(22, 3);

                       obj = ORGX + ACCT + LOGO;

                          count++;

                          ORGX = "";
                          ACCT = "";
                          LOGO = "";

                          string[] arr = obj.Split(new char[] {'\t'});

                          for (int i = 0; i < arr.Length; i++)
                          {
                              //arr = obj;
                              string x = arr.Substring(0, 3);
                              string y = arr.Substring(3, 19);
                              string k = arr.Substring(22,3);
                              com.Parameters.AddWithValue("@ORGX", x);
                              com.Parameters.AddWithValue("@ACCT", y);
                              com.Parameters.AddWithValue("@LOGO", k);

                              MessageBox.Show("The Variables of x " + x + " y " + y + " k " + k + " count " + count);
                          }
                          com.ExecuteNonQuery();
                  }



                  MessageBox.Show("you have " + count.ToString() + " rows");
            } 

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

اتمنى الرد ياجماعه ضروري

واللي حاب يتأكد من مخرجات البرنامج بالـ MessageBox

يضع هذي الاسطر عنده بملف تكست ويحدد مكان ملف التكست من StreamReader

020

0004485091553487203

001

020

0004485091553487344

001

020

0004485091553487534

001

020

0004485091553487559

001

020

0004485091553487567

001

020

0004485091553488284

001

020

0004485091553488490

001

020

0004485091553488508

001

020

0004485091553488524

001

020

0004485091553488532

001

020

0004485091553488540

001

020

0004485091553488557

001

020

0004485091553488565

001

020

0004485091553488599

001

020

0004485091553488607

001

020

0004485091553488615

001

020

0004485091553488623

001

020

0004485091559991323

001

020

0004485097000001414

001

مشكورين واتمنى اني ما اكون اطلت عليكم

#2

السلام عليكم.

أخي جرب تضع الكود التالي مباشرة قبل حلقة for:

com.Parameters.Clear()
#3

جرب هذا الكود

         string path = @"C:\A.TXT";
            StreamReader sr = new StreamReader(path);
            string connection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\db1.mdb;Persist Security Info=True";
            OleDbConnection con = new OleDbConnection(connection);
            OleDbCommand com = new OleDbCommand();
            com.Connection = con;
            com.CommandText = "INSERT INTO mr (ORGX,ACCT,LOGO) VALUES (@ORGX,@ACCT,@LOGO)";
            string lines = "";
            string ORGX = "";
            string ACCT = "";
            string LOGO = "";
            try
            {
                con.Open();
                while ((lines = sr.ReadLine()) != null)
                {
                    ORGX = lines.Substring(0, 3);
                    ACCT = lines.Substring(3, 19);
                    LOGO = lines.Substring(22, 3);
                    com.Parameters.Clear();
                    com.Parameters.AddWithValue("@ORGX", ORGX);
                    com.Parameters.AddWithValue("@ACCT", ACCT);
                    com.Parameters.AddWithValue("@LOGO", LOGO);

                    com.ExecuteNonQuery();
                }
                MessageBox.Show("ok");
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                con.Close();
            }

تم تعديل هذه المشاركة بواسطة KARIMSOFT في 22 يناير 2012 في 02:02

#4

ايوه اخوي مشكوووووووووووور البرنامج ماشي زي الحلاوه

الله يعطيك الف عافيه ماقصرت

اقتباس
جرب هذا الكود

تسلم اخوي كلو تمام يسلمك ربي

تم تعديل هذه المشاركة بواسطة Mejo Magic في 22 يناير 2012 في 10:48

#5
Adel Khayata كتب:

السلام عليكم.

أخي جرب تضع الكود التالي مباشرة قبل حلقة for:

com.Parameters.Clear()

مية المية ياكبتن وفعلاً هذا اللي كان ناقص

ربي يعطيك الف عافية

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…