کي ميدونه اين پيغام خطا واسه چيه؟

در اين بخش مي‌توانيد به مباحث مربوط به انواع زبان هاي برنامه نويسي بپردازيد

مدیران انجمن: athlon64x2, abbas.m.k, شوراي نظارت

New Member
نمایه کاربر
پست: 17
تاریخ عضویت: پنج شنبه 11 مرداد 1386, 4:00 pm

کي ميدونه اين پيغام خطا واسه چيه؟

پست توسط mehdi.kh » دو شنبه 15 مرداد 1386, 1:14 am

سلام دوستان
من می خوام که یه سری اطلاعات که داخل یه فرم توسط کاربر وارد می شه رو تو بانک اطلاعاتی ذخیره کنم . ولی با پیغام زیر روبرو می شم.

Line 1: Incorrect syntax near 'Name'.

لطفا اگه کسی از شما می تونه منو راهنمایی کنه . ممنون می شم.

New Member
نمایه کاربر
پست: 17
تاریخ عضویت: پنج شنبه 11 مرداد 1386, 4:00 pm

پست توسط mehdi.kh » دو شنبه 15 مرداد 1386, 1:17 am

راستي اينم کد برنامه اي که نوشتم(البته قسمت مربوط به ذخيره کردنش)
public partial class frmcustomer : Form
{
// declear variables
private string strfilename;
//constant string
private const string _commandtext =
"SELECT CustomerID, Name, Fname, FatherName, MelliNumber, Addres, PostalCode," +
"HomePhone, PhotoPath, Description FROM tbCustomer ORDER BY CustomerID";
private const string _connectionstring =
"Data Source=localhost;Initial Catalog=Book;Integrated Security=True";
//declear global objects ...
SqlConnection customerConnection;
SqlDataAdapter customerDataAdapter;
DataSet customerDataSet;
DataView customerDataView;
CurrencyManager customerCurrencyManager;
private void FillDataSetAndView()
{
//initialize a new instance of the dataset customer ...
customerDataSet = new DataSet();

//fill the dataset customer with data ...
customerDataAdapter.Fill(customerDataSet, "tbCustomer");

//set the dataview customer to the dataset customer ...
customerDataView = new DataView(customerDataSet.Tables["tbCustomer"]);

//set our currencymanager customer to the dataview customer ...
customerCurrencyManager = (CurrencyManager)(this.BindingContext[customerDataView]);
}

private void BindFields()
{
//clear any previous bindings ...
txtname.DataBindings.Clear();
txtfname.DataBindings.Clear();
txtfathername.DataBindings.Clear();
txtbrithdate.DataBindings.Clear();
txtaddres.DataBindings.Clear();
txtdiscription.DataBindings.Clear();
txtmellicode.DataBindings.Clear();
txtpicaddress.DataBindings.Clear();
txtpostalcode.DataBindings.Clear();
txttellnumber.DataBindings.Clear();

//add new bindings to the dataview customer ...
txtname.DataBindings.Add("Text", customerDataView, "Name");
txtfname.DataBindings.Add("Text", customerDataView, "Fname");
txtfathername.DataBindings.Add("Text", customerDataView, "FatherName");
txtmellicode.DataBindings.Add("Text", customerDataView, "MelliNumber");
txtaddres.DataBindings.Add("Text", customerDataView, "Addres");
txtpostalcode.DataBindings.Add("Text", customerDataView, "PostalCode");
txttellnumber.DataBindings.Add("Text", customerDataView, "HomePhone");
txtpicaddress.DataBindings.Add("Text", customerDataView, "PhotoPath");
txtdiscription.DataBindings.Add("Text", customerDataView, "Description");

//display a ready status ...
toolStripStatusLabel1.Text = "در حال خواندن";
}
private void ClearFields()
{
//clear the customer fields ...
txtname.Text = "";
txtfname.Text = "";
txtfathername.Text = "";
txtmellicode.Text = "";
txtaddres.Text = "";
txtpostalcode.Text = "";
txttellnumber.Text = "";
txtbrithdate.Text = "";
txtpicaddress.Text = "";
txtdiscription.Text = "";
Photo.Image = bookpro.Properties.Resources.noimage;
txtname.Focus();
toolStripStatusLabel1.Text = "در حال خواندن";
}


public frmcustomer()
{
InitializeComponent();
}
private void frmcustomer_Load(object sender, EventArgs e)
{
customerConnection = new SqlConnection(_connectionstring);
customerDataAdapter = new SqlDataAdapter(_commandtext, customerConnection);
//fill the dataset and bind the fields ...
FillDataSetAndView();
BindFields();


}

private void btnsave_Click(object sender, EventArgs e)
{
int intposition, intmax = 0;

//declear local variables and object ...
SqlCommand customercommand = new SqlCommand();

// save the current record position ...
intposition = customerCurrencyManager.Position;

// create a new sqlcommand object ...
SqlCommand maxidCommand = new SqlCommand("SELECT MAX(CustomerID)" +
"FROM tbCustomer", customerConnection);

//open the connection , execute the command
customerConnection.Open();
object maxid = maxidCommand.ExecuteScalar();

// if the maxid clolumn is null ...
if (maxid == DBNull.Value)
{
// set a default value of 1000 ...
intmax = 1;
}
else
{
//increment the value ...
intmax = (int.Parse((maxid).ToString())) + 1;
}
// set the sqlcommand object properties ...
customercommand.Connection = customerConnection;
customercommand.CommandText = "INSERT INTO tbCustomer " +
"Name,Fname,FatherName,MelliNumber,Addres,PostalCode," +
"HomePhone,PhotoPath,Description) " +
"VALUES (@Name,@Fname,@FatherName,@MelliNumber,@Addres,@PostalCode," +
"@HomePhone,@PhotoPath,@Description)";

// add parameters for the placeholders in the sql in the command text property...
customercommand.Parameters.AddWithValue("@Name", txtname.Text);
customercommand.Parameters.AddWithValue("@Fname", txtfname.Text);
customercommand.Parameters.AddWithValue("@FatherName", txtfathername.Text);
customercommand.Parameters.AddWithValue("@MelliNumber", txtmellicode.Text).DbType = DbType.Int32;
customercommand.Parameters.AddWithValue("@Addres", txtaddres.Text);
customercommand.Parameters.AddWithValue("@PostalCode", txtpostalcode.Text);
customercommand.Parameters.AddWithValue("@HomePhone", txttellnumber.Text);
customercommand.Parameters.AddWithValue("@PhotoPath", txtpicaddress.Text);
customercommand.Parameters.AddWithValue("@Description", txtdiscription.Text);

// execute the sqlcommand object
// to insert the new data ...
try
{
customercommand.ExecuteNonQuery();
}
catch (SqlException sqlExceptionErr)
{
MessageBox.Show(sqlExceptionErr.Message);
throw sqlExceptionErr;
}

//close the connection ...
customerConnection.Close();

// fill the dataset and bind the filds ...
FillDataSetAndView();
BindFields();

// set the record position to the one that you saved ...
customerCurrencyManager.Position = intposition;

// display a message that the record was added ...
toolStripStatusLabel1.Text = "رکورد اضافه شد";
}

New Member
نمایه کاربر
پست: 17
تاریخ عضویت: پنج شنبه 11 مرداد 1386, 4:00 pm

پست توسط mehdi.kh » دو شنبه 15 مرداد 1386, 1:25 am

يه سوال ديگه هم داشتم و اون اينه که:
من تو بانک اطلاعاتي برنامه يکسري داده به زبان فارسي وارد کرده ام ولي برنامه قادر به خواندن اونا نيست مثلا در فرم ورود برنامه داده هاي ثبت شده به زبان انگليسي در بانک اطلاعاتي بدون هيچ مشکلي خونده مي شن ولي داده هاي فارسي اصلا در دسترس نيستن(خونده نمي شن) و پيغام خطايي رو که خودم واسه زماني که نام کاربري و رمز عبور با هم نخونن رو نمايش مي ده.
اساتيد محترم اگه ممکنه يه جوابي هم به اين سوال بديد.
با تشکر
فعلا امضا ندارم

New Member
نمایه کاربر
پست: 17
تاریخ عضویت: پنج شنبه 11 مرداد 1386, 4:00 pm

پست توسط mehdi.kh » چهار شنبه 17 مرداد 1386, 3:21 am

کسي نيست به من کمک کنه.
آقا مهدي ، آقا .... پس شما کجاييد. :-( :sad:
فعلا امضا ندارم

Colonel I
Colonel I
پست: 643
تاریخ عضویت: سه شنبه 19 تیر 1386, 1:08 pm
سپاس‌های ارسالی: 300 بار
سپاس‌های دریافتی: 1161 بار

پست توسط Frogfoot » چهار شنبه 17 مرداد 1386, 9:00 am

اون خطای اول که مربوط به کد SQL ایی هست که نوشتید. توضیح ندادید که از چه نوع بانکی استفاده می کنید. می تونید این کد SQL را در محیط ارائه شده توسط اون نرم افزار مدیریت بانک اطلاعاتی اجرا کنید (مثلا در SQL Server می تونید از Query Analyzer استفاده کنید)، و زمانی که کد SQL بدون مشکل اجرا شد، آن را به داخل کد خودتون Copy/Paste کنید. فکر کنم در این مورد باید کلمه Name را داخل [ ] قرار بدید، البته مطوئن نیستم.

در مورد سوال دوم هم باید ابتدا مطمئن بشید که داده های فارسی درست در بانک ذخیره شده اند یا نه؛ مثلا در SQL Server باید از فیلدهای یونیکد استفاده کنید و در زمان ذخیره داده ها هم قبل از متن فارسی ارسال شده، یک حرف n قرار بدید. تنظیمات Regional Settings ویندوز را هم چک کنید که زبان فارسی نصب شده باشه. Charset فونت کنترل هایی که برای نمایش داده ها استفاده میشند را هم چک کنید که روی Arabic باشد.

Administrator
Administrator
نمایه کاربر
پست: 15674
تاریخ عضویت: جمعه 7 بهمن 1384, 7:51 pm
سپاس‌های ارسالی: 70844 بار
سپاس‌های دریافتی: 31298 بار
تماس:

پست توسط Mahdi1944 » چهار شنبه 17 مرداد 1386, 9:10 am

mehdi.kh جان
چيزي به نظرم نميرسه، متن خطا بيانگر خطاي نوشتاري هست که من فکر ميکنم به دستورات SQL بايد توجه کنيد، پيشنهاد ميکنم اگر از access استفاده ميکنيد، کد SQL رو در خود اکسس ايجاد کرده و در برنامه استفاده کنيد
براي مشکل فارسي هم قبل تمام رشته‌هاي فارسي n قرار بديد و در تنظيمات Regional&LanguageSettings در تب advance زبان رو براي non-unicode ها farsi انتخاب کنيد، به احتمال زياد مشکل حل خواهد شد
موفق باشيد
زندگي صحنه يکتاي هنرمندي ماست هرکسي نغمه خود خواند و از صحنه رود
صحنه پيوسته به جاست خرم آن نغمه که مردم بسپارند به ياد


[لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | مجله الکترونيکي سنترال کلابز

[لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]

لطفا سوالات فني را فقط در خود انجمن مطرح بفرماييد، به اين سوالات در PM پاسخ داده نخواهد شد

New Member
نمایه کاربر
پست: 17
تاریخ عضویت: پنج شنبه 11 مرداد 1386, 4:00 pm

پست توسط mehdi.kh » جمعه 19 مرداد 1386, 6:13 am

با تشکر از شما دوستان
چيزايي که گفتيد امتحان نکردم ولي حتما جواب خواهم داد
در ضمن من از SQL Server استفاده مي کنم
:razz: :razz: :razz: :razz: :razz: :razz: :razz: :razz: :razz: :razz: :razz: :razz: :razz: :razz: :razz: :razz: :razz: :razz:
فعلا امضا ندارم

New Member
نمایه کاربر
پست: 17
تاریخ عضویت: پنج شنبه 11 مرداد 1386, 4:00 pm

پست توسط mehdi.kh » یک شنبه 21 مرداد 1386, 1:59 am

سلام
بازهم از کمک شما ممنون . مشکل اولم حل شد ولي در مورد سوال دوم بازهم مشکل دارم . يه توضيح ديگه مي دم که بحث واضح تر بشه.
من در برنامه خودم يه قسمت واسه بازيابي رمز عبور فراموش شده در نظر گرفتم که يه سري اطلاعات امنيتي رو از کاربر ميگيره و بعد از تطبيق دادن اطلاعات وارد شده با اطلاعات ثبت شده در بانک اطلاعاتي اگه يکي بود رمز عبور رو نشون مي ده در غير اينصورت پيغام خطا ميده.
من واسه اينکار از stores procedure استفاده کردم و اينم بگم که بازيابي اطلاعاتي که انگليسي تو بانک ثبت شده انجام ميشه ولي با فارسي مشکل داره و پيغام خطاي مطابقت نداشتن اطلاعات رو نشون ميده.
اينم کد
CREATE PROCEDURE Recover
@Name nvarchar(20),
@Title nvarchar(30),
@UserName nvarchar(25),
@SecurityCode nvarchar(6 (
AS
SELECT Name,UserName,Password,LastLogin FROM tbEmployee
WHERE tbEmployee.Name=@Name AND tbEmployee.Title=@title AND tbEmployee.UserName=@UserName AND tbEmployee.SecurityCode=@SecurityCode
GO

از همه دوستان ممنون مي شم اگه راهنمايي کنن
فعلا امضا ندارم

Administrator
Administrator
نمایه کاربر
پست: 15674
تاریخ عضویت: جمعه 7 بهمن 1384, 7:51 pm
سپاس‌های ارسالی: 70844 بار
سپاس‌های دریافتی: 31298 بار
تماس:

پست توسط Mahdi1944 » یک شنبه 21 مرداد 1386, 2:20 am

mehdi.kh
توصيه ميکنم براي رمز فارسي رو غير فعال کنيد، مخصوصا اگر پسورد با MD5 و امثال اون کد ميشه، با حروف فارسي مشکل پيدا ميکنه، اما به طور کلي اگر در ارسال اطلاعات و يا بازخواني فيلدهاي فارسي مشکل داريد بايد قبل شرو رشته n قرار بديد، البته در اين صورت رشته فارسي مخسوب ميشه، اگر بعد از اين موضوع با انگليسيها مشکل داشتيد بايد به صورت شرطي تعيين کنيد به چه صورت ارسال بشه، اما به طور کلي براي پسوردها بهتره پرهيز کنيد :-)
زندگي صحنه يکتاي هنرمندي ماست هرکسي نغمه خود خواند و از صحنه رود
صحنه پيوسته به جاست خرم آن نغمه که مردم بسپارند به ياد


[لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | مجله الکترونيکي سنترال کلابز

[لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]

لطفا سوالات فني را فقط در خود انجمن مطرح بفرماييد، به اين سوالات در PM پاسخ داده نخواهد شد

New Member
نمایه کاربر
پست: 17
تاریخ عضویت: پنج شنبه 11 مرداد 1386, 4:00 pm

پست توسط mehdi.kh » یک شنبه 21 مرداد 1386, 3:45 am

Mahdi1944 نوشته شده:mehdi.kh
توصيه ميکنم براي رمز فارسي رو غير فعال کنيد، مخصوصا اگر پسورد با MD5 و امثال اون کد ميشه، با حروف فارسي مشکل پيدا ميکنه، اما به طور کلي اگر در ارسال اطلاعات و يا بازخواني فيلدهاي فارسي مشکل داريد بايد قبل شرو رشته n قرار بديد، البته در اين صورت رشته فارسي مخسوب ميشه، اگر بعد از اين موضوع با انگليسيها مشکل داشتيد بايد به صورت شرطي تعيين کنيد به چه صورت ارسال بشه، اما به طور کلي براي پسوردها بهتره پرهيز کنيد :-)


Mahdi1944 جان
اولا ممنون از جوابی که ارسال کردی
بعدشم اینکه باید بگم که در فرم ورود ،برنامه هیچ مشکلی با رمز عبور وارد شده(البته منظورم فاسیه) نداره و می تونه عملیات تشخیص سازگاری رمز عبور و نام کاربری رو طبق اطلاعات موجود در بانک انجام بده.
راستی چطور میشه رمز عبور فارسی رو غیر فعال کرد اگه یه کم بیشتر توضیح بدید ممنون می شم آخه من یه خورده زیادی تازه کارم :grin: :-)

Administrator
Administrator
نمایه کاربر
پست: 15674
تاریخ عضویت: جمعه 7 بهمن 1384, 7:51 pm
سپاس‌های ارسالی: 70844 بار
سپاس‌های دریافتی: 31298 بار
تماس:

پست توسط Mahdi1944 » یک شنبه 21 مرداد 1386, 10:15 am

mehdi.kh,
فکر ميکنم در قسمت خصوصيات وجود داره اين مورد، اما ميشه از ترفندهايي هم استفاده کرد، که مثلا کاراکترهاي وارد شده، موارد خاصي بودند، پيغام خاصي نمايش بده و عمليات ثبت در ديتابيس رو انجام نده، مثلا کاراکترهاي فارسي رو ليست کنيد و اگر يکي از اونها در رشته وجود داشت، از ثبت اون جلوگيري کنه، در اين صورت فارسي در ديتابيس ثبت نخواهد شد
زندگي صحنه يکتاي هنرمندي ماست هرکسي نغمه خود خواند و از صحنه رود
صحنه پيوسته به جاست خرم آن نغمه که مردم بسپارند به ياد


[لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | مجله الکترونيکي سنترال کلابز

[لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] | [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]

لطفا سوالات فني را فقط در خود انجمن مطرح بفرماييد، به اين سوالات در PM پاسخ داده نخواهد شد

Colonel I
Colonel I
پست: 643
تاریخ عضویت: سه شنبه 19 تیر 1386, 1:08 pm
سپاس‌های ارسالی: 300 بار
سپاس‌های دریافتی: 1161 بار

پست توسط Frogfoot » یک شنبه 21 مرداد 1386, 3:09 pm

برای سوال دومتان اگر با راهکارهایی که ارائه شد مشکل حل نشد، چک کنید که Coalition بانک اطلاعاتی و فیلدهای شما در SQL Server بر روی Arabic تنظیم شده باشه.

دو نکته را هم اضافه کنم که؛ حرف n در ابتدای رشته به SQL Server میگه که رشته را به صورت یونیکد ذخیره کنه. در این صورت، فرقی نمی کنه که از چه زبانی استفاده کنید، چون یونیکد تمام زبان های زند دنیا را پشتیبانی می کند، پس استفاده از یونیکد مشکلی در کاراکتر های انگلیسی شما بوجود نمی آورد. نکته دوم هم اینکه MD5 هش کد (Hash Code) های غیرقابل برگشت با طول ثابت تولید میکنه، یعنی شما هر متنی با هرحجمی به آن بدهی (چه یک بایت، چه 1 میلیارد بایت)د، یک Hash Code (مثلا 128 بیتی) از آن تولید می کند که منحصر به فرد است. این فرایند برگشت پذیر نیست و شما نمی توانید از روی Hash Code ایجاد شده، دوباره متن مربوطه (در اینجا کلمه رمز) را بازیافت کنید. معمولا در نرم افزارهایی که کلمه رمز را Hash می کنند، کد Hash شده در بانک ذخیره می شود، و اگر کاربر کلمه رمز خود را فراموش کند، رمز قبلی ریست شده و رمز جدیدی توسط سیستم به کاربر داده می شود و از کاربر خواسته می شود که در اولین مراجعه به سیستم، این رمز ساخته شده را با رمز دلخواه خود تعویض کند.

موفق باشید

ارسال پست

بازگشت به “برنامه نويسي”