PDA

View Full Version : اشکال عجیب در connection string



JikSearch
چهارشنبه 14 اردیبهشت 1384, 12:03 عصر
سلام
من برای پرکردن مقادیر یک DropDownlist از کانکشن زیر در هنگام لود صفحه استفاده میکنم

<span dir=ltr>constr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Inetpub\\wwwroot\\App\\db\\db1.mdb";</span>

در مرحله بعد که کابر مشخصات لازم را در تکست باکس ها وارد می کند با کلید ثبت، اطلاعات را وارد دیتابیس می کنم اما در این مرحله یعنی متد Button_Click مقدار کانکشن استرینگ Null شده است
درضمن هیچکدام از تکست باکس ها و Dropdownlist پست بک نیستند.

چرا؟؟؟ :گیج: :mad: :گیج: :mad:

kochol
چهارشنبه 14 اردیبهشت 1384, 18:38 عصر
من که کانکشن هامو در page-load تعریف می کنم و هیچ مشکلی هم نداشته

kochol
چهارشنبه 14 اردیبهشت 1384, 18:47 عصر
C:\\Inetpub\\wwwroot\\App\\db\\db1

فکر نمی کنی بخاطر اینکه 2 تا \ گذاشتی باشه

JikSearch
چهارشنبه 14 اردیبهشت 1384, 18:55 عصر
جناب kochol واقعیتش منم خودم موندم قضیه چیه؟ اصلا سر در نمی آورم !!! :confy2:

kochol
چهارشنبه 14 اردیبهشت 1384, 19:09 عصر
بیا دیگه هر کاری بخوای بکنی باید این مثاله مشکلت را حل کنه


OLE DB Provider for Microsoft Jet
For standard security

oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" &amp; _
"Data Source=c&#58;\somepath\myDb.mdb;" &amp; _
"User Id=admin;" &amp; _
"Password="

If using a Workgroup &#40;System Database&#41;

oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" &amp; _
"Data Source=c&#58;\somepath\mydb.mdb;" &amp; _
"Jet OLEDB&#58;System Database=MySystem.mdw", _
"myUsername", "myPassword"
Note, remember to convert both the MDB and the MDW to the 4.0
database format when using the 4.0 OLE DB Provider.


If MDB has a database password

oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" &amp; _
"Data Source=c&#58;\somepath\mydb.mdb;" &amp; _
"Jet OLEDB&#58;Database Password=MyDbPassword", _
"myUsername", "myPassword"

If want to open up the MDB exclusively

oConn.Mode = adModeShareExclusive
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" &amp; _
"Data Source=c&#58;\somepath\myDb.mdb;" &amp; _
"User Id=admin;" &amp; _
"Password="

If MDB is located on a network share

oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" &amp; _
"Data Source=\\myServer\myShare\myPath\myDb.mdb"

If MDB is located on a remote machine

- Or use an XML Web Service via SOAP Toolkit or ASP.NET
- Or upgrade to SQL Server and use an IP connection string
- Or use an ADO URL with a remote ASP web page
- Or use a MS Remote or RDS connection string


If you don't know the path to the MDB &#40;using ASP&#41;

&lt;% ' ASP server-side code
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" &amp; _
"Data Source=" &amp; Server.MapPath&#40;"."&#41; &amp; "\myDb.mdb;" &amp; _
"User Id=admin;" &amp; _
"Password="
%>
This assumes the MDB is in the same directory where the ASP page is running. Also make sure this directory has Write permissions for the user account.


If you don't know the path to the MDB &#40;using VB&#41;

oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" &amp; _
"Data Source=" &amp; App.Path &amp; "\myDb.mdb;" &amp; _
"User Id=admin;" &amp; _
"Password="
This assumes the MDB is in the same directory where the application is running

Behrouz_Rad
چهارشنبه 14 اردیبهشت 1384, 21:42 عصر
من برای پرکردن مقادیر یک DropDownlist از کانکشن زیر در هنگام لود صفحه استفاده میکنم

constr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Inetpub\\wwwroot\\App\\db\\db1.mdb";

در مرحله بعد که کابر مشخصات لازم را در تکست باکس ها وارد می کند با کلید ثبت، اطلاعات را وارد دیتابیس می کنم اما در این مرحله یعنی متد Button_Click مقدار کانکشن استرینگ Null شده است
دلیلش واضحه هست.
Connection ها فقط در روال مربوطه جواب می دهند و پس از اتمام کار در روال، کانکشن null می شود.
در تمامی روال ها، Connection باید مجددا باز شود.



فکر نمی کنی بخاطر اینکه 2 تا \ گذاشتی باشه
خیر.
در C#.NET به دلیل اینکه علامت \، کاراکترهای کنترلی را مشخص می کند، برای مشخص کردن یک \ به عنوان کاراکتر، باید علامت \ را دو بار پشت سر هم نوشت.

JikSearch
پنج شنبه 15 اردیبهشت 1384, 09:08 صبح
سلام
جناب kochol واقعا کد خوبی نوشتید (در واقع refrence خوب) خیلی متشکرم
همانطور که جناب Behrouz_Rad فرمودند \ مشکلی ایجاد نکرده
اما آقای Behrouz_Rad من متغییر رشته ای را در خارج این روال تعریف کردم فقط در این روال مقدار دهی شده است آیا پس از خروج از یک روال مقادیر اختصاص داده شده به متغییر های خارج روال ازبین می روند؟
اگر امکان دارد در مورد این موضوع توضیح دهید در زبان های دیگر متغییر Global داریم در #C به چه صورت می باشد؟

Behrouz_Rad
پنج شنبه 15 اردیبهشت 1384, 09:59 صبح
منظورم از null شدن، null شدن Connection بود نه متغیر رشته ای.
متغیر رشته ای را در فایل Web.Config تعریف کنید. مشکل شما حل می شود.

JikSearch
پنج شنبه 15 اردیبهشت 1384, 16:08 عصر
متشکرم آقای Behrouz_Rad که وقتتون را در اختیارم گذاشتید من برم ببینم چطور میشه متغییر در Web.Config تعریف کرد.
درضمن اشکال قضیه هم اینه که مقدار متغییر رشته ای را Null میکنه

kochol
پنج شنبه 15 اردیبهشت 1384, 17:50 عصر
&lt;configuration>
&lt;appSettings>
&lt;add key="connectionString" value="server=&#40;local&#41;;initial catalog=mydatabase;uid=myuid;pwd=xxxx">&lt;/add>
&lt;/appSettings>
&lt;system.web>

برای خوندنش هم


System.Configuration.ConfigurationSettings.AppSett ings.GetValues&#40;0&#41;.GetValue&#40;0&#41;

Behrouz_Rad
پنج شنبه 15 اردیبهشت 1384, 18:29 عصر
در تنظیمات Web.Config که جناب kochol نوشتند، بهتره به جای کلمه (local)، از localhost استفاده کنید.

در قسمت دوم کد ایشون هم که به منظور خواندن محتویات فایل Web.Config نوشته شده، بهتره به شکل زیر عمل کنید:


Dim strConnection As String = ConfigurationSettings.AppSettings&#40; "connectionString" &#41;

در زمانی که Key های زیادی در فایل Web.Config وارد شوند، کد فوق کارایی بیشتری از نظر سهل الوصول بودن به مقدار مورد نظر دارد.
سعی کنید در زمانی که یک متغیر را به صورت سرتاسری تعریف می کنید، به آن یک مقدار پیش فرض نسبت دهید.

موفق باشید.

kochol
شنبه 17 اردیبهشت 1384, 01:01 صبح
بهتره به جای کلمه (local)، از localhost استفاده کنید.

من روی سرور این بهم جواب داد

Behrouz_Rad
شنبه 17 اردیبهشت 1384, 06:54 صبح
جناب lochol عزیز!
از باب اشکال عرض نکردم. اشاره کردم که بهتره.
موفق باشید. :)