ورود

View Full Version : این کد ADO.Net درست هست یا نه؟



هادی2020
چهارشنبه 12 تیر 1387, 17:17 عصر
چه مشکلی در این شرط می بینید؟


Dim da As New Data.OleDb.OleDbDataAdapter("select * from Q_AGG where (FirstName='" & TXTNAME.Text & "' ) '" & "' AND (lastname='" & TXTFAMILY.Text & "' ) '" & " ", con)

morteza_261
چهارشنبه 12 تیر 1387, 23:38 عصر
سلام

"&","AND"

__H2__
پنج شنبه 13 تیر 1387, 02:11 صبح
سلام
اگر هم درست باشد، باید دستور SQL تان اینچنینن باشد.


"SELECT * FROM Q_AGG WHERE (FirstName=N'" & TXTNAME.Text & "' ) AND (lastname=N'" & TXTFAMILY.Text & "' )"

ولی در کل بهتر است از روش پارامتری استفاده کنید، چون مشکلاتی با کاراکترهای خاص به وجود می اید.

khz-web1
جمعه 14 تیر 1387, 19:39 عصر
میشه یکم راجب روش پارامتری توضیح بدی....

__H2__
جمعه 14 تیر 1387, 23:17 عصر
سلام
فکر کنم یک مثال بهتر از کلی توضیح باشد.
همان کد قبلی را میتوانید به روش پارامتری زیر انجام دهید.


Dim dbCom As New System.Data.OleDb.OleDbCommand("SELECT * FROM Q_AGG WHERE (FirstName=@FirstName) AND (lastname=@lastname)")
Dim dbParam As System.Data.OleDb.OleDbParameter

dbParam = New System.Data.OleDb.OleDbParameter("@FirstName", System.Data.OleDb.OleDbType.VarWChar)
dbParam.Value = Me.TXTNAME.Text
dbCom.Parameters.Add(dbParam)

dbParam = New System.Data.OleDb.OleDbParameter("@lastname", System.Data.OleDb.OleDbType.VarWChar)
dbParam.Value = Me.TXTFAMILY.Text
dbCom.Parameters.Add(dbParam)

'dbCom.Parameters(0).Value = ...
'dbCom.Parameters(1).Value = ...


در زمان نمونه سازی یک پارامتر (New) آرگومان های مختلفی گرفته میشود و میتوان با حالات مختلفی عمل فوق را انجام داد، استفاده از روش پارامتری برای دیتاهای متنی و تاریخ و باینری تقریباً واجب است و استفاده از این روش برای مقادیر عددی هم بد نیست و باعض شفافیت بیشتر کد میشود.

khz-web1
سه شنبه 21 آبان 1387, 20:32 عصر
به نظر شما استفاده از روش پارامتری چه برتری های نسبت به روش معمولی داره ....
اگه ذکر کنید ممنون میشم

rooshan2008
سه شنبه 21 آبان 1387, 21:13 عصر
سلام
1-مثلاً اگر شما بخواهید یک فایل را در بانک خود ذخیره کنید بهترین را استفاده این هست که فایل را خوانده و تبدیل به آرایها ی از Byteکنید و آن را از روش پارامتری ارسال کنید در صورتی که در روش متنی مستقیم کار مشکلی می باشد.
2- خطا یابی دستور متنی به دلیل استفاده + & سخت می باشد و شکل خوشایندی به برنامه نمی بخشد .
3-در مستند سازی و توسعه نرم افزار نیز عبارات نوشته شده انتقام سختی از شما خواهند گرفت:لبخند:

__H2__
چهارشنبه 22 آبان 1387, 00:01 صبح
سلام
در ادامه پست جناب rooshan2008 ....
4) عدم استفاده از روش پارامتری در مورد تاریخ و حتی string هم مشکل ساز خواهد شد.

فرمت متنی تاریخ string شده احتمال دارد در سیستم عامل های مختلف فرق کند و برای نسخه های مختلف sqlserver قابل پذیرش نباشد، که روش پارامتری تضمین همانهنگی در هر سیستمعامل و هر نسخه sqlserver را خواهد داشت.

در مورد string هم امکان دارد کاربر شما کاراکترهای خاصی را تایپ کند، مثلاً تک و جفت کتیشن و ... که یا باید به این کاراکترهای به طریقه درست سرویس دهید و string تان را با replace تصحیح کنید و یا در صورت تایپ این موارد برنامه شما به خطای runtime برخورد خواهد کرد.
ضمناً برای موارد unide باید حرف N اضافه شود و برای موارد اسکی نباید اضافه شود.


5) روش استاندارد استفاده از sp ها در sqlserver هم پارامتری است، که استفاده از sp میتواند در بهینه سازی و افزایش سرعت و وضوح بیشتر و انعطاف پذیری بیشتر بسیار موثر باشد.

موفق باشید.