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

كيف يمكن قراءة connectionString من ملف نصي أي TextFile

بدأه asiri6 في 23 يوليو 2012 · 12 رد · 1,316 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

بداية أهنئ المنتدى والقائمين عليه والأعضاء جميعاً بشهر رمضان المبارك ، وتقبل الله من الجميع ، وجعلنا ممن أعتقهم الله في هذا الشهر من النار

ثانيا / أشكر كل من رد على استفساراتي السابقة وأسأل الله لهم التوفيق

لدي استفسار وهو كيف يمكن أن أضع الاتصال ( connectionString ) في ملف نصي ، بحيث يكون هذا الملف على C أو D مثلاً ، ثم يتم قراءة هذا الاتصال عن طريق الكود ، حيث حاولت بعدة طرق ولم أنجح ، لإرجو مساعدتي وجزاكم الله خير ، مرفق الكود

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.IO;

namespace Habter
{


    internal partial class SearchForm : Habter.PageDataAccess
    {

        SqlDataAdapter pagingAdapter;
        DataSet pagingDS;
        int scrollVal;

        public SearchForm()
        {
            InitializeComponent();
            scrollVal = 0;         

        }

        SqlConnection con2 = new SqlConnection();


        private void textMobileSearch_TextChanged(object sender, EventArgs e)
        {

     StreamReader objstream = new StreamReader("D:\\11.txt");


            con2.ConnectionString = objstream.ReadLine();
            con2.Open();

string sql = "SELECT Customers.Id_Customer, Customers.CustomerName, Customers.Mobile, Invoices.Invoice_No, Invoices.DateOfInvoice, Invoices.System_Type FROM Customers INNER JOIN Invoices ON Customers.Id_Customer = Invoices.Id_Customer WHERE Customers.Mobile LIKE " + textMobileSearch.Text + "ORDER BY [Invoice_No] DESC";
            //SqlConnection connection = new SqlConnection(connectionString);
            pagingAdapter = new SqlDataAdapter(sql, con2);
            pagingDS = new DataSet();


            if(textMobileSearch.Text!="")
            {
                pagingAdapter.Fill(pagingDS, scrollVal, 5, "Customers");
                con2.Close();
                dataGridView1.DataSource = pagingDS;
                dataGridView1.DataMember = "Customers";
            }

            else
            {

                dataGridView1.Visible = false;
            }

        }

علماً بأن الاتصال الذي في الملف النصي هو

اقتباس
"Data Source=ASIRI-PC\\SQLEXPRESS;Initial Catalog=sales;Integrated Security=True"
#2

لماذا لا تقوم بتخزينه في app.config ؟

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#3

أشكر لك ردك وجزاك الله خير

ولكن أفضل أن أضعه في ملف نصي حتى أتمكن من تعديله في المستقبل ، فقد أجعله يقرأ من سيرفر مثلاً وبالتالي لا أحتاج التعديل في الكود

ملحوظة ، هذا تطبيق Windows Application

#4

ملف الapp.config هو ملف مرفق Windows Application يمكن التعديل علية من خلال الNotepad ولا يحتاج التغير في الكود اقراء في app.config قبل اتخاذ القرار

علي العموم كود قراة ملف نص

string readText = System.IO.File.ReadAllText(path);
#5

جزاك الله خيراً على ردك

هل من الممكن أن تشرح لي طريقة عمل app.config وهل يمكن وضعه بشكل مستقل عن البرنامج للتعديل عليه ، أرجو توضيح ذلك بالتفصيل ،

الذي أحب أن أعمله هو أن أجعل هذا الملف الذي يحتوي على بيانات الاتصال سواء كان ملف نصي Text أو ملف app.config أن في السيرفر مثلاً أو على جهاز العميل بحيث يقرأ البرنامج منه بيانات الإتصال بقاعدة البيانات ، وإذا أحتجت تنصيبه على سيرفر آخر عندها لا أحتاج تعديل الكود فقط أعدل في هذا الملف والذي يحتوي على الاتصال سواء كان IP ، أو Localhost ، لأذا أرجو توضيح ذلك لي وجزاك الله خير

وقد استخدمت هذا الكود الذي وضعته بهذا الشكل ولكن لم يعمل

using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Data;
 using System.Drawing;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;
 using System.Data.SqlClient;
 using System.IO;

namespace Habter
 {


internal partial class SearchForm : Habter.PageDataAccess
 {

 SqlDataAdapter pagingAdapter;
 DataSet pagingDS;
 int scrollVal;

public SearchForm()
 {
 InitializeComponent();
 scrollVal = 0; 

}

SqlConnection con2 = new SqlConnection();


private void textMobileSearch_TextChanged(object sender, EventArgs e)
 {

StreamReader objstream = new StreamReader("D:\\11.txt");


string readText = System.IO.File.ReadAllText("D:\\11.txt");


 con2.ConnectionString =readText ;

 con2.Open();

string sql = "SELECT Customers.Id_Customer, Customers.CustomerName, Customers.Mobile, Invoices.Invoice_No, Invoices.DateOfInvoice, Invoices.System_Type FROM Customers INNER JOIN Invoices ON Customers.Id_Customer = Invoices.Id_Customer WHERE Customers.Mobile LIKE " + textMobileSearch.Text + "ORDER BY [Invoice_No] DESC";
 //SqlConnection connection = new SqlConnection(connectionString);
 pagingAdapter = new SqlDataAdapter(sql, con2);
 pagingDS = new DataSet();


 if(textMobileSearch.Text!="")
 {
 pagingAdapter.Fill(pagingDS, scrollVal, 5, "Customers");
 con2.Close();
 dataGridView1.DataSource = pagingDS;
 dataGridView1.DataMember = "Customers";
 }

else
 {

dataGridView1.Visible = false;
 }

 }

تم تعديل هذه المشاركة بواسطة Xacker في 23 يوليو 2012 في 17:35 — السبب: تنسيق المشاركة بوسم [CODE]

#6

الاخ karimsoft و xacker كلامهما صحيح فهو يتحدث عن ملف txt تخزن فيه الاعدادات الخاصه بالرنامج لديك ولكن هو يريد هذه الاعدادات ان تقرأ من خلال الشبكه اى تصل الى كل الاجهزه المتصله بالشبكه فى نفس الوقت دون التعديل على كل تطبيق لكل جهاز متصل بالشبكه ويمكن حل المشكله بأكثر من طريقه منها :

- الطريقه هى ان تجعل البرنامج يقرأ الملف من خلال مكان ما فى السيرفر اى ان تصنع فولدر وتعمل له شير بدون باسوورد ثم تجعل البرنامج يقرأ الاعدادات من هذا الملف مباشره والموضوع سهل جدا بدلا من ان تعطى الكود المسار للملف داخل الهارد ديسك الذى لديك ستعطيه مسار على السيرفر مثال

بدلا من ان تعطى الكود مسار الملف المحفوظ على الهارد لديك مثلا c://win/filesetting

سوف تقول له ان المسار للاعدادات هو

\\10.0.0.33\win\filesetting

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

هذا كل ما فى الامر

وموضوع انك تكتب الاعدادات فى الملف ثو تقرأها منه لايوجد اسهل منها وقد شرحتها سابقا فى الموضوع السابق هذا

/index.php?showtopic=263780

73b14eadba.gif

الحمدلله والصلاة والسلام على رسول الله وعلى آله وصحبه أجمعين

لكل مبتدئى البرمجه برمجه بلغه السى شارب

تنصيب ويندوز 8 على vmware

#7

أشكرك يا أخ محمد سلامه على ردك ، وجزاك الله خير

وقد قمت بوضع الاتصال وهو Data Source=ASIRI-PC\\SQLEXPRESS;Initial Catalog=sales;Integrated Security=True" في ملف نصي اسميته 11.txt ، وقمت بعمل كود لقراءة هذا الملف ، وعند التنفيذ تظهر لي مشكلة في عند con2.open فأرجو مساعدتي في حل تلكة المشكلة وجزاكم الله خيراً

تم تعديل هذه المشاركة بواسطة asiri6 في 24 يوليو 2012 في 00:16

#8

هل تقوم بوضع double quotes حول سلسلة الاتصال في الملف؟

إن كنت تفعل فامسحها واترك السلسلة بدون double quotes محيطة بها.

أيضاً حبذا لو ذكرت نص رسالة الخطأ.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#9

انشأ ملف في c وليكن اسمه Conn.txt

ضعه بداخله الكنكشن مثل هذا

Data Source=SP00;Initial Catalog=DataBase;Persist Security Info=True;User ID=SA;Password=

واسختدم في الكود هذا

string s = File.ReadAllText("C:\\Conn.txt");

string s = File.ReadAllText("C:\\Conn.txt");

انا استخدمه وشغال معايا 100%

وكل ما اتغير شي في الاتصال غير على ملف التكست وبالتوفيق

#10

أشكرك أخ عبدالله

جربت اللي قلت ، ولكن دائما تظهر لي رسالة {"Instance failure."} عند conn.open

#11

لم تجب على مشاركتي أعلاه.

إضافة إليها، جرب هذا:

Data Source=ASIRI-PC\SQLEXPRESS;Initial Catalog=sales;Integrated Security=True

بدون double quotes كما ذكرت سابقاً.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#12

أشكرك عزيزي Xacker على ردك ، وفعلت كا قلت ، وذهبت المشكلة والحمد لله

جزى الله كل من ساعدني خيراً

بقي سؤال

كيف أضه الملف على السيرفر ، وأجعل برنامج يقرأه ومن ثم يعمل الإتصال

تم تعديل هذه المشاركة بواسطة asiri6 في 24 يوليو 2012 في 14:00

#13

وضعه على السيرفر وإعداد المشاركة والصلاحيات المناسبة يمكنك السؤال عنها في قسم الشبكات (يمكنني مساعدتك هنا لكن لا أريد أن يتشعب الموضوع بين أفكار مختلفة)

باختصار لو كان لديك بعض الخبرة في الموضوع

فيمكنك وضع الملف في مجلد مثلاً، ومن ثم مشاركته ووضع صلاحيات Read لمجموعة Everyone (أو مجموعة المستخدمين ضمن الشبكة إن كانت تحوي على Domain Controller.. الأمر يعود لك)

ومن Advanced Permissions يجب أن يكون لديهم صلاحيات List Dir و Read، وهذه عادة يتم وضعها تلقائياً عند وضع صلاحية Read في خيارات المشاركة البسيطة.

بعدها يجب أن يكون بإمكانك الوصول للملف والمجلد من خلال عنوان IP الجهاز أو اسمه بالشكل التالي:

\\that-pc\folder\file

حيث that-pc هو اسم الجهاز (أو يمكنك استخدام IP كما في مشاركة محمد سلامة)

folder هو اسم المجلد الذي شاركته والملف فيه

file هو اسم الملف

إن استطعت استعراض محتويات الملف بنجاح من أي جهاز فحينها يكون برنامجك جاهزاً لاستخدام هذا المسار، أو يتوجب عليك تعديله حسب الحاجة (قد تحوي الشبكة على Firewall مثلاً يقوم بتعطيل بعض الخدمات الضرورية حتى يستطيع جهاز "رؤية" الآخر على الشبكة، إلخ ...)

التفاصيل يمكنك السؤال عنها في قسم الشبكات.

تابع هذا الموضوع لمزيد من المعلومات:

http://www.techrepublic.com/article/techrepublic-tutorial-create-and-control-shared-folders-in-windows-xp/1056017

بالتوفيق.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

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