PDA

View Full Version : سوال: مشکل در ویرایش اطلاعات بانک



Atrocios1
سه شنبه 11 فروردین 1388, 04:52 صبح
سلام دوستان
اگه میشه بگید که مشکل این کد من چیه:



Dim Command1 As New OleDbCommand("Select UserName, Password From Admin_TBL Where UserName='" + Session.Contents("UserName") + "'", Connection)
Connection.Open()
Dim DR1 As OleDbDataReader = Command1.ExecuteReader
If DR1.Read Then
If DR1.Item(1) = TextBox1.Text Then
Dim Command2 As New OleDbCommand("Update Admin_TBL Set Password='" + TextBox2.Text + "' Where UserName='" + Session.Contents("UserName") + "'", Connection)
Command2.ExecuteNonQuery()
ElseIf DR1.Item(1) <> TextBox1.Text Then
Response.Write("<SCRIPT>alert('لطفآ پسورد قبلی را صحیح وارد نمایید!')</SCRIPT>")
GoTo EndLabel
End If
End If
Connection.Close()
EndLabel:


آخه وقتی این کد را تست می کنم این ارور میاد!!!


Server Error in '/Test' Application.

Syntax error in UPDATE statement.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.OleDb.OleDbException: Syntax error in UPDATE statement.

Source Error:

Line 33: If DR1.Item(1) = TextBox1.Text Then
Line 34: Dim Command2 As New OleDbCommand("Update Admin_TBL Set Password='" + TextBox2.Text + "' Where UserName='" + UserName + "'", Connection)
Line 35: Command2.ExecuteNonQuery()
Line 36: ElseIf DR1.Item(1) <> TextBox1.Text Then
Line 37: Response.Write("<SCRIPT>alert('ظ„ط·ظپط¢ ظ¾ط³ظˆط±ط¯ ظ‚ط¨ظ„غŒ ط±ط§ طµط­غŒط­ ظˆط§ط±ط¯ ظ†ظ…ط§غŒغŒط¯!')</SCRIPT>")
Source File: C:\Documents and Settings\Atrocios\Desktop\Files\Test\Administrator \Pass.aspx.vb Line: 35

Stack Trace:

[OleDbException (0x80040e14): Syntax error in UPDATE statement.]
System.Data.OleDb.OleDbCommand.ExecuteCommandTextF orSingleResult(tagDBPARAMS dbParams, Object& executeResult) +177
System.Data.OleDb.OleDbCommand.ExecuteCommandText( Object& executeResult) +194
System.Data.OleDb.OleDbCommand.ExecuteCommand(Comm andBehavior behavior, Object& executeResult) +56
System.Data.OleDb.OleDbCommand.ExecuteReaderIntern al(CommandBehavior behavior, String method) +105
System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +88
Administrator_Pass.Button1_Click(Object sender, EventArgs e) in C:\Documents and Settings\Atrocios\Desktop\Files\Test\Administrator \Pass.aspx.vb:35
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +75
System.Web.UI.WebControls.Button.RaisePostBackEven t(String eventArgument) +97
System.Web.UI.WebControls.Button.System.Web.UI.IPo stBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEve ntHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCol lection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +4885

Version Information: Microsoft .NET Framework Version:2.0.50727.1433; ASP.NET Version:2.0.50727.1433

من می خوام با این دستور فیلد Password را در جدول Admin_TBLویرایش کنم
ببخشید اگه خیلی مقدماتی و پیش پا افتاده است!:ناراحت:

online_mansoor2007
سه شنبه 11 فروردین 1388, 09:38 صبح
سلام

عبارت password را که در دستور update به کار بردید در بین دو علامت [] قرار دهید . یعنی به این صورت [password]

raziee
سه شنبه 11 فروردین 1388, 12:49 عصر
بهرته بجای کد TSQL از SqlStoredProc hsjthni استفاده کنی. هم به خاطر بالا بردن امنیت و هم دیگه به این مشکلات بر نخواهی خرد

Atrocios1
سه شنبه 11 فروردین 1388, 15:15 عصر
سلام

عبارت password را که در دستور update به کار بردید در بین دو علامت [] قرار دهید . یعنی به این صورت [password]
مرسی مشکل حل شد!

بهرته بجای کد TSQL از SqlStoredProc hsjthni استفاده کنی. هم به خاطر بالا بردن امنیت و هم دیگه به این مشکلات بر نخواهی خرد
من اصلآ نمی دونم این روش چیه اگه میشه توضیح بدین؟!

raziee
سه شنبه 11 فروردین 1388, 15:58 عصر
یعنی شما زیر روال هایی رو در خود بانک اطلاعاتی میسازی. و از اون برای اضافه کردن - حذف و یا هر چیز دیگه ای استفاده میکنی.
دوستان زیادی از جمله جناب راد در مورد بالا بردن امنیت وب سایت ها در این روش صحبت کردند.
در ضمن فکر میکنم که به سرعت سیستم هم کمک کنه.(یعنی اینجوری شنیده ام.)
مثلا:


CREATE PROCEDURE CommentIU
(
@cm_Text Varchar(1000),
@cm_Date Varchar(20),
@cm_Time Varchar(20),
@cm_Name Varchar(20),
@cm_Email Varchar(20),
@cm_Website Varchar(20),
@cm_Private Bit,
@ps_ID Decimal,
@p_UserName Varchar(20)
)
AS
BEGIN
IF @cm_Text=0
BEGIN
SET NOCOUNT ON;
INSERT INTO Comment(cm_Date,cm_Time,cm_Name,cm_Email,cm_Websit e,cm_Private,ps_ID,p_UserName)
Values(@cm_Date,@cm_Time,@cm_Name,@cm_Email,@cm_We bsite,@cm_Private,@ps_ID,@p_UserName)
END
ELSE
BEGIN
SET NOCOUNT ON;
UPDATE Comment
SET
cm_Date=@cm_Date,
cm_Time=@cm_Time,
cm_Name=@cm_Name,
cm_Email=@cm_Email,
cm_Website=@cm_Website,
cm_Private=@cm_Private,
ps_ID=@ps_ID,
p_UserName=@p_UserName
WHERE cm_Text=@cm_Text
END
END
GO


در مورد این مسئله میتونی در بخش بانک اطلاعاتی SQL Server جستجو کنی.
شاد باشید