PDA

View Full Version : اشکال در ثبت فیلد در پایگاه داده



papa_fal
شنبه 30 اردیبهشت 1385, 20:40 عصر
با عرض سلام خدمت دوستان عزیز
این قطعه کد برای ذخیره تعدادی فیلد در جدول Customers است.
شاید زیاد مربوط به این بخش نباشه ولی در دیگر بخش ها نتیجه ای نگرفتم.
ممنون می شم بگید که کدام قسمت از این کد کوچک که مدتی است وقت من را گرفته ایراد دارد.؟؟؟
و من باید چه namespace هایی هم اضافه کنم که نکرده دام؟؟؟
'private void Button1_Click(object sender, System.EventArgs e)
{
SqlCommand Com=new SqlCommand(Con,"INSERT INTO Customers(CustomerID,CompanyName,ContactName,Conta ctTitle,Address,Cit y)Values(@CustomerID,@CompanyName,@ContactName,@Co ntactTitle,@Address,@City)");
Com.Parameters.Add("@CustomerID",SqlDbType.Char).value=CIDtxt.Text;

Com.Parameters.Add("@CompanyName",SqlDbType.Char).value=Cntxt.Text;

Com.Parameters.Add("@ContactName",SqlDbType.Char).value=Contxt.Text;

Com.Parameters.Add("@ContactTitle",SqlDbType.Char).value=Cttxt.Text;

Com.Parameters.Add("@Address",SqlDbType.Char).value=Atxt.Text;

Com.Parameters.Add("@City",SqlDbType.Char).value=Ctxt.Text;
Con.Open();
Com.ExecuteNonQuery();
Con.Close();
Response.Redirect("default.aspx");}'




من فقط این را اضافه کرده ام:
'using System.Data.SqlClient;'

پیشاپیش از شما تشکر می کنم.و منتظر راهنمایی های شما هستم.

nazaninam
شنبه 30 اردیبهشت 1385, 22:23 عصر
آیا پیام خطا دریافت می کنید؟
اگه بله لطف کنید پیام کامل خطا را اینجا داخل تگ [code] بگذارید بخونیم

white fox
شنبه 30 اردیبهشت 1385, 22:27 عصر
اول اینکه دستور CMD تون غلط هست اول باید رشته INSERT تتون باشه بعد از , به عنوان پارامتر دوم باید کانکشن رو معرفی کنید...شما بر عکس کار کردید.
دوما اینکه لازم نیست برای INSERT از متغیر SQL ی استفاده کنید...
زمانی از پارامتر استفاده کنید که دارید با SP کار میکنید.
موقع INSERT بجای متغیر SQLی از خود TextBox ها استفاده کنید و با + متغیرها رو به رشته اضافه کنید..
بعد اینکه شما چه خطائی دریافت میکنید؟ ...بنویسید کمک بیشتری دوستان میتونند بکنند بهتون

ali_sorouri2005
شنبه 30 اردیبهشت 1385, 23:31 عصر
به نظر من احتمالا داره از تعریف پارامتر هاتون ایراد می گیره به این شکل تعریف کنید
com.parameters.add("@companyname",cntxt.text)
موفق باشید

papa_fal
یک شنبه 31 اردیبهشت 1385, 07:56 صبح
با سلام و ممنون از لطف همگی

واقعا پیغامهای گیج کننده ای می دهد در اولین فرصت قرار می دهم.
ولی آیا کسی از دوستان است که این کد را خودش اجرا کرده باشد؟و کسی مایل است که من این کد را بریش بفرستم و خود یک نگاهی بکند.؟؟
با تشکر

papa_fal
یک شنبه 31 اردیبهشت 1385, 19:38 عصر
با سلام به دوستان
خطا ها را اینجا نوشتم
بازم از لطف شما ممنونم:
راستی من نوشته هامو داخل تک کد می ذارم ولی بازم اینطوری به هم میریزه.
آیا هر سطر را باید داخل تک کد بذارم.
شک کردم {{'این تک کده دیگه؟؟؟؟؟


error:'System.Data.SqlClient.SqlParameter' does not contain a definition for 'value'

baraye tamame satrhayi ke [value] darand ,yani 4 satr
-----------------------------------------------------------------------------------------------------


error1: Argument '3': cannot convert from 'string' to 'int'
,

error2: The best overloaded method match for 'System.Data.SqlClient.SqlParameterCollection.Add( string, System.Data.SqlDbType,
int)' has some invalid arguments

baraye in satr:

Com.Parameters.Add("@CustomerID",SqlDbType.Char).value=CIDtxt.Text

----------------------------------------------------------------------------------------------------------------
error1: Argument '2': cannot convert from 'string' to 'System.Data.SqlClient.SqlConnection'

,

error2: Argument '1': cannot convert from 'System.Data.SqlClient.SqlConnection' to 'string'
,

error3:The best overloaded method match for 'System.Data.SqlClient.SqlCommand.SqlCommand(strin g,
System.Data.SqlClient.SqlConnection)' has some invalid arguments

baraye in satr:
SqlCommand Com=new SqlCommand(Con,"INSERT INTO Customers(CustomerID,CompanyName,ContactName,Conta ctTitle,Address,City)
Values(@CustomerID,@CompanyName,@ContactName,@Cont actTitle,@Address,@City");'

manager
یک شنبه 31 اردیبهشت 1385, 20:49 عصر
1- دوست من شما سعی دارید CustomerID رو که (به احتمال خیلی زیاد) از نوع ID و Readonly و Autonumber هست رو تنظیم کنید که این کار اشتباه است.

2- حتما از SP استفاده کن یا حداقل از یه فیلتر برای جلوگیری از Sql Injection استفاده کن.

3- از اسامی با مفهموم تر استفاده کن

4- کدهاتون رو برای پرسیدن سوال بین تگ های code بگذارید




System.Data.SqlClient.SqlCommand insertCmd = new

System.Data.SqlClient.SqlCommand();
string insertCmdText=@"INSERT INTO Customers(CompanyName,
ContactName,ContactTitle,Address,City)Values({0},{ 1},{2},{3},{4})";
String.Format(insertCmd, CIDtxt.Text, Cntxt.Text, Contxt.Text, Cttxt.Text, Atxt.Text, Ctxt.Text);

insertCmd.CommandText = insertCmdText;
insertCmd.CommandType = CommandType.Text;
conn.Open();
insertCmd.ExecuteNonQuery();
conn.Close();

papa_fal
یک شنبه 31 اردیبهشت 1385, 22:13 عصر
با سلام
دوستان از همگی ممنونم
مشکل من حل شد.
البته SqlDbType را حذف کردم و به روش دوستمان ali_sorouri2005 عمل کردم.
ولی هنوزم نمی دانم که چرا آن را خطا می گرفت.؟؟؟؟؟؟
ولی حالا این مشکل را دارد.

Exception Details: System.Data.SqlClient.SqlException: String or binary data would be truncated. The statement has been terminated.

همه چیز را چک کردم.
به نظر شما مشکل از کجاست؟؟؟؟؟؟
'Line 191: Com.Parameters.Add("@City",Ctxt.Text);'
'Line 192: Con.Open();'
'Line 193: Com.ExecuteNonQuery();'
'Line 194: Con.Close();'
' Response.Redirect("default.aspx"); '

برای سطر 193 خطا می گیرد.
پیشاپیش ممنونم از شما
باور کنید در تگ کد قرار میدم ولی بازم...............
شاید درست قرار نمی دم.
اگه درست باشه باید مثل نوشته های آقای manager باشه درسته؟؟؟؟؟

papa_fal
دوشنبه 01 خرداد 1385, 09:10 صبح
این تاپیک را بازم فعال کردم
تا از دید دوستان مخفی نمونه
با تشکر

papa_fal
دوشنبه 01 خرداد 1385, 12:29 عصر
با تشکر از همه شما دوستان عزیز
مشکل من به طور کلی حل شد (البته در این زمینه).
ولی می خواستم بپرسم که چه{name space} ای باید برای SqlDbType}} وارد کنم.؟؟؟؟؟

reza_rad
دوشنبه 01 خرداد 1385, 12:43 عصر
1- سوال دیگه رو باید توی تاپیک دیگه بپرسید
2- جواب شما :


System.Data.SqlDbType

papa_fal
دوشنبه 01 خرداد 1385, 13:21 عصر
ممنون از شما
حتما