PDA

View Full Version : خطا Incorrect syntax near the keyword 'user'



ramin149
پنج شنبه 13 خرداد 1389, 11:38 صبح
من 2 روزه که می خوام اطلاعاتی رو وارد دیتابیس کنم ولی نمی تونم لطفا کمک کنید فایل پروشه رو ضمینه می کنم ببینید مشکل کجاست ؟

http://www.4shared.com/file/EgtDQ7d2/phone.html

mansoooreh
پنج شنبه 13 خرداد 1389, 11:47 صبح
سلام
ساختار دیتابیست چیه؟ مثلا همین جدول user که روش خطا میده چه ستون هایی داره؟

ramin149
پنج شنبه 13 خرداد 1389, 11:56 صبح
سه ستون داره
id = int = pkey
name =nvarcar
family = nvarcar

mansoooreh
پنج شنبه 13 خرداد 1389, 12:04 عصر
احتمالا id هم باید داشته باشی (اگر id کلید جدول باشه) برای اینکه یک id خودکار داشته باشی می تونی تایپ id رو بذاری uniqueidentifier و هنگام insert بجای مقدار id بذار newid() که یک تابع است در sql که id جدید تولید می کنه و یونیک

M.YasPro
پنج شنبه 13 خرداد 1389, 12:11 عصر
دستور SQL رو بزارید .

ramin149
پنج شنبه 13 خرداد 1389, 12:19 عصر
db.DoCommand("insert into user (name,family)values('" + txt_name.Text + "','" + txt_Family.Text + "')");

M.YasPro
پنج شنبه 13 خرداد 1389, 12:31 عصر
نام جدولتون رو داخل [] بزارید .

ramin149
پنج شنبه 13 خرداد 1389, 13:11 عصر
نام جدولتون رو داخل [] بزارید .

خطا رفع شد ولی اطلاعاتی رو داخل دیتابیس نمی ریزه . چرا ؟؟
چرا باید برای دستور از [] استفاده گرد ؟؟

M.YasPro
پنج شنبه 13 خرداد 1389, 13:42 عصر
خطایی که وجود داشت برای این بود که شما از کلمات رزرو شده sqlserver (http://msdn.microsoft.com/en-us/library/aa238507%28SQL.80%29.aspx) استفاده کرده بودید .
کد insert رو بزارید تا بهتر بشه اظهار نظر کرد .

ramin149
جمعه 14 خرداد 1389, 18:59 عصر
خطایی که وجود داشت برای این بود که شما از کلمات رزرو شده sqlserver (http://msdn.microsoft.com/en-us/library/aa238507%28SQL.80%29.aspx) استفاده کرده بودید .
کد insert رو بزارید تا بهتر بشه اظهار نظر کرد .



من کد insert رو قبلا نوشتم


db.DoCommand("insert into user (name,family)values('" + txt_name.Text + "','" + txt_Family.Text + "')");

سورس برنامه رو هم بالا ضمینه گردم

ars333
شنبه 15 خرداد 1389, 01:03 صبح
هنگام اینزرت کردن حتما باید کلید اصلی رو هم ذکر کنی، در صورتیکه شما برای ورود اطلاعات از فیلد کلید اصلی استفاده نکردی

میلاد قاضی پور
شنبه 15 خرداد 1389, 01:41 صبح
مطمئن بشید که شی کامندتون رو به شی کانکشنتون نسبت دادید و از متد Command.ExecuteNonQuery();
هم آخر کدتون استفاده کردید . بهتر بود کمی کاملتر کدهارو ارائه میکردید تا بهتر بشه نظر داد .

ramin149
شنبه 15 خرداد 1389, 09:23 صبح
مطمئن بشید که شی کامندتون رو به شی کانکشنتون نسبت دادید و از متد Command.ExecuteNonQuery();
هم آخر کدتون استفاده کردید . بهتر بود کمی کاملتر کدهارو ارائه میکردید تا بهتر بشه نظر داد .

این هم کلاسی که من صدا می زنم


class DataAcssesLayer
{
private SqlCommand cmd;
private SqlConnection con;
private SqlDataAdapter da;
private DataTable dt;
public void DoCommand(string ole)
{

SqlConnection conn = new SqlConnection(@"data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database1.mdf;Integrated Security=True;User Instance=True");
cmd = new SqlCommand();
cmd.Connection = conn;
conn.Open();
cmd.CommandText = ole;
cmd.ExecuteNonQuery();
conn.Close();
}

public DataTable DoSelect(string sql)
{
con = new SqlConnection();
con.ConnectionString = @"Data Source=Database1.sdf;Persist Security Info=False";
cmd = new SqlCommand();
cmd.Connection = con;
da = new SqlDataAdapter(cmd);
dt = new DataTable();
con.Open();
cmd.CommandText = sql;
da.Fill(dt);
con.Close();
return dt;
}
}

samfarham
پنج شنبه 10 خرداد 1397, 02:53 صبح
سلام دوستان . منم به این ارور خوردم ، موندم دیگه چیکار کنم ، اگه میشه کمکم کنید
http://uupload.ir/files/pzpn_1527720456453-731148278.jpg

URL=http://uupload.ir/]http://uupload.ir/files/pzpn_1527720456453-731148278.jpg[/URL]

Mahmoud.Afrad
پنج شنبه 10 خرداد 1397, 04:12 صبح
سلام دوستان . منم به این ارور خوردم ، موندم دیگه چیکار کنم ، اگه میشه کمکم کنید
http://uupload.ir/files/pzpn_1527720456453-731148278.jpg


به جای عکس گرفتن با گوشی، از صفحه اسکرین شات بگیرید. حتی نیاز به عکس نیست بلکه کافیه کوئری و متن خطا را قرار بدید.


در مورد خطا اینکه بعد از نام جدول در دستور insert باید کلمه values را قرار بدید.

در شرط برای بررسی وجود رکورد بهتر هست از exists به جای count استفاده کنید.

danialafshari
پنج شنبه 10 خرداد 1397, 04:25 صبح
سلام دوستان . منم به این ارور خوردم ، موندم دیگه چیکار کنم ، اگه میشه کمکم کنید
http://uupload.ir/files/pzpn_1527720456453-731148278.jpg

URL=http://uupload.ir/]http://uupload.ir/files/pzpn_1527720456453-731148278.jpg[/URL]
با سلام
لطفاً قوانین رو رعایت کنید و در بخش مربوطه ("Sql Server > TSQL") سوالتون رو مطرج کنید و بجای عکس از قالب SQL سایت استفاده کنید
کلمه Values رو بعد Insert ننوشتید و برای نوشتن پروسیجر های چند دستوری بهتره از قوائد استاندارد و BEGIN, END استفاده کنید
تست:

USE [Test]
GO
/****** Object: StoredProcedure [dbo].[SP_TESTPROC] Script Date: 1397/03/10 04:46:46 صـبـح ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Danial Afshari>
-- Create date: <1397/03/10>
-- Description: <Create for Test>
-- =============================================
ALTER PROCEDURE [dbo].[SP_TESTPROC]
@id INT,
@firstName NVARCHAR(50),
@lastName NVARCHAR(50),
@nationalCode NVARCHAR(10)
-- Add the parameters for the stored procedure here
AS
BEGIN
SET NOCOUNT ON;
IF (SELECT COUNT (ID) FROM Person WHERE NatioinalCode=@nationalCode)>0
BEGIN
RETURN 0
END
ELSE
BEGIN
INSERT INTO Person
VALUES
(
@id,
@firstName,
@lastName,
@nationalCode
)
RETURN 1
END
END

موفق باشید

danialafshari
یک شنبه 13 خرداد 1397, 03:33 صبح
سلام
چرا باید داخل [] بذاریم ؟
کلا همیشه باید این کارو بکنیم یا فقط برای مشکل ایشون ؟
با سلام
قبل از سوال در مورد Syntax باید هدف از نوشتنش رو بدونید
براکت[] در اصل یک شناسه جداگانه هست که برای شناسایی به کار میره، برخی از کاربرداش :معمولاً برای جدا کردن اسم های خاص و رزرو شده مورد استفاده قرار میگیره که حتی میتونید نام فیلد رو هم [While] و [if] قرار بدید بدون اینکه مشکلی پیش بیاد و یا قرار دادن کاراکتر های خاص در نام گذاری [Danial.Afshari], [@barnamenevis]
و برای وجود خط فاصله در نام گذاری مانند جدول مورد استفاده قرار میگیره مثال : [Table Person] ,...
موفق باشید