PDA

View Full Version : syntax error in insert into



پریناز.21
سه شنبه 22 بهمن 1387, 23:41 عصر
سلام
من دارم یه برنامه مینویسم اگه این دستورات اس کیو ال دیوونم نکنن. شما میدونید کجای این دستور درج مشکل داره؟ همش ارور میده که دستور درج مشکل سینتکس داره.


cb = new OleDbCommandBuilder(da);
OleDbCommand cm = new OleDbCommand("INSERT INTO user&pass_tbl(username,password,usertype) values('" + usern_uman_txt.Text + "',N'" + pass_uman_txt.Text + "','user')", con);
con.Open();
cm.ExecuteNonQuery();
con.Close();

e601
چهارشنبه 23 بهمن 1387, 00:36 صبح
با سلام

دستور شما 2 تا اشکال داره

1. کاراکتر & رو از نام جدولتون حذف کنید. میتونید نام جدول رو به userpass_tbl یا هر نام دلخواه دیگه ای تغییر بدین
2. در صورتی که میخواهید پسورد به همراه یک حرف N ذخیره شود باید اون قسمت رو تصحیح کنید

در کل دستور INSERT خود رو به شکل زیر تغییر دهید. من نام جدول رو به userpass_tbl و قسمت مربوط به پسورد رو تصحیح کردم


INSERT INTO userpass_tbl(username,password,usertype) values('" & usern_uman_txt.Text & "','" & "N" & pass_uman_txt.Text & "','user')

نکته: پیشنهاد میکنم همیشه برای تلفیق رشته ها بجای کاراکتر + از & استفاده کنید

موفق باشید...

پریناز.21
چهارشنبه 23 بهمن 1387, 00:46 صبح
دوست عزیز کارهایی که گفتید روانجام دادم اما باز هم همون خطا

اوبالیت به بو
چهارشنبه 23 بهمن 1387, 02:39 صبح
يه بار ديگه به كوتيشن ها دقت كنيد:


('" + usern_uman_txt.Text + "',N'" + pass_uman_txt.Text + "','user')"

پریناز.21
چهارشنبه 23 بهمن 1387, 17:11 عصر
کوتیشن هاهم درسته. اصلا اینا رو پاک کردم گفتم جهنم و ضرر از دیتاتیبل استفاده کردم. اما همچنان همان ارور میاد. خسته شدم

حامد مصافی
چهارشنبه 23 بهمن 1387, 17:26 عصر
فیلد password از نوع nvarchar است؟

e601
چهارشنبه 23 بهمن 1387, 19:43 عصر
دوست عزیز کارهایی که گفتید روانجام دادم اما باز هم همون خطا

سلام

دوست عزیز مجددا یادآوری میکنم نام جدولتون رو در فایل بانک اطلاعاتی تغییر بدین. فقط تغییر نام در دستور کافی نیست
ضمن اینکه من دستور مورد نظر رو تست کردم و براتون گذاشتم. جواب داد
مشکل عجیبیه!!!

یه کار دیگه رو هم تست کنید کاراکتر سمی کولن رو به انتهای دستور INSERT اضافه کنید (یعنی همون ; )
هر چند که بدون اون هم نباید ایراد بگیره !

کد زیر رو درون یک جفت کوتیشن قرار دادهو جایگزین کدINSERT اولیه تون کنید انشاالله جواب میده



INSERT INTO userpass_tbl(username,password,usertype) values('" & usern_uman_txt.Text & "','" & "N" & pass_uman_txt.Text & "','user');


متاسفانه وقت نکردم کد شما رو در خود NET. تست کنم ولی امیدوارم مشکل برطرف بشه

موفق باشید...

پریناز.21
چهارشنبه 23 بهمن 1387, 20:59 عصر
pass از نوع nvarchar نیست .
همون بار اول هم نام رو در دیتابیس تغییر دادم اما باز هم با همه راهنمایی های جدید شما همچنان در خط excutnounquery همان ارور زیبا پدیدار میشه.
در ضمن فکر نکنم سی شارپ & رو قبول کنه ، چون همش از این کارکتر ایراد میگیره.
من نمیدونم چرا وقتی اینارو هم حذف میکنم بازم این ارور میاد . دیتا تیبل و اضافه کردن سطر جدید چه ربطی به مشکل سینتکسی دستور درج داره. این رو هم بگم که چندین بار کامپایل هم کردم.:گریه:

پریناز.21
پنج شنبه 24 بهمن 1387, 18:23 عصر
دوستان برنامه نویس برنامه من دیگه هیچ راهی جز راهنمایی های شما نداره.واقعا دیگه نمیدونم چه کار کنم.اگه میشه راه های درج دیگه ای که وجود داره رو بفرمایید؟

حامد مصافی
پنج شنبه 24 بهمن 1387, 19:48 عصر
کاراکتر N را بردارید.

پریناز.21
پنج شنبه 24 بهمن 1387, 19:57 عصر
اون که خیلی وقت پیش حذف شده بود.

mehdimdp
جمعه 25 بهمن 1387, 00:28 صبح
در جدولت نام فيلد پسورد رو عوض كن ببين چي ميشه
مثلا به جاي password بزارش pass

e601
جمعه 25 بهمن 1387, 00:58 صبح
با سلام

دوست عزیز بهتره برای امتحان سایر روشها به بخش C# مراجعه کنید

البته واسه اینکه دسته خالی نموده باشین کد زیر رو به شما ارائه میکنم
این کد با استفاده از Microsoft ActiveX Data Object2.8 که باید تیک مربوط به آن در قسمت Refrences خورده باشه ، عملیات افزودن اطلاعات رو انجام میده



Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset

Dim strConnection As String

strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=AccessDatabasePath;Persist Security Info=False"
cnn.Open strConnection

With rst
.ActiveConnection = cnn
.Open TableName, cnn, adOpenKeyset, adLockOptimistic, adCmdTable
.AddNew
!FieldName = Value
.Update
End With

قسمتهای قرمز رنگ رو شما باید مشخص کنید
قابل توجه:
AccessDatabasePath مسیر فایل اکسس هست که نباید داخل کوتیشن قرار بگیره
TableName باید درون "" قرار بگیره
ّFieldName کوتیشن نمیخواد
برای اختصاص دادن Value به فیلد مورد نظر به نوع داده ای فیلدتون دقت کنید

موفق باشید...