نمایش نتایج 1 تا 11 از 11

نام تاپیک: خطای Can't perform Create, Update, or Delete operations on Table because it has no primary key

  1. #1

    خطای Can't perform Create, Update, or Delete operations on Table because it has no primary key

    سلام
    دوستان مشکل این کد کجاست که موقع اجرا اخطار می ده

    Can't perform Create, Update, or Delete operations on 'Table(Table1)' because it has no primary key.


          private void button1_Click(object sender, EventArgs e)
    {
    var db = new DataClasses1DataContext();
    var q = db.Table1s;
    dataGridView1.DataSource = q;
    }

    private void button2_Click(object sender, EventArgs e)
    {
    DataClasses1DataContext db = new DataClasses1DataContext();
    db.Table1s.InsertOnSubmit(new Table1 { name = textBox1.Text });
    db.SubmitChanges();

  2. #2
    کاربر دائمی آواتار pedram.11
    تاریخ عضویت
    اردیبهشت 1391
    محل زندگی
    پشت کامپیوتر
    پست
    394

    نقل قول: خطا هنگام درج اطلاعات در دیتابیس

    سلام خودش میگه که دیتابیس فیلد دارای Primary Key نداره

  3. #3

    نقل قول: خطا هنگام درج اطلاعات در دیتابیس

    درست کردم ولی بازم ارور می ده

    Violation of PRIMARY KEY constraint 'PK_Table2'. Cannot insert duplicate key in object 'dbo.Table2'.
    The statement has been terminated.

  4. #4
    کاربر دائمی آواتار pedram.11
    تاریخ عضویت
    اردیبهشت 1391
    محل زندگی
    پشت کامپیوتر
    پست
    394

    نقل قول: خطا هنگام درج اطلاعات در دیتابیس

    میگه کلید تکراری نمیتونه قرار بده! ببینید وقتی شما یک فیلدی رو بعنوان کلید تعیین میکنید اون فیلد نباید مقدار تکراری بگیره، معمولا برای Primary Key یک آیدی عددی انتخاب میکنن و به ازای هر سطر جدید یک شماره میره بالا و مقدار تکراری وجود نداره، شما احتمالا دارید مقداری رو که قبلا ثبت شده دوباره بعنوان کلید اضافه میکنید و این ارور داده میشه

  5. #5

    نقل قول: خطا هنگام درج اطلاعات در دیتابیس

    اون مشکلم حل نشد یکی دیگه ساختم بازم همینجوریه


    مشکل این کجاست

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace WindowsFormsApplication1
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
    var db = new DataClasses1DataContext();
    var simple_query = db.tbl_users;
    dataGridView1.DataSource = simple_query;
    }

    private void button2_Click(object sender, EventArgs e)
    {
    string _firstname = firstname.Text ,
    string _lastname = lastname.Text ,
    string _username = username.Text ,
    string _password = password.Text ,
    string _telephone = telephone.Text ,
    var db = new DataClasses1DataContext();
    tbl_user tb=new tbl_user();
    {
    firstname = _firstname ,
    lastname = _lastname ,
    username = _username ,
    password = _password ,
    telephone = _telephone
    };

    db.tbl_users.InsertOnSubmit(tb);
    db.SubmitChanges();
    dataGridView1.DataSource =db.tbl_users;


    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }
    }
    }


    دقیقا مثل آموزشی که خریدم رفتم جلو ولی ارور می ده و اطلاعات رو ثبت نمی کنه

    موندم به خدا

  6. #6
    کاربر دائمی آواتار pedram.11
    تاریخ عضویت
    اردیبهشت 1391
    محل زندگی
    پشت کامپیوتر
    پست
    394

    نقل قول: خطا هنگام درج اطلاعات در دیتابیس

    شما یک فیلد با نام ID از نوع int بسازید و خاصیت AUTOINCREMENT رو true قرار بدید باید مشکل حل بشه.
    در مورد کدی که دادید فکر کنم یکجا حرف ; زیاد گذاشتید، اینجا:
    tbl_user tb=new tbl_user();
    {
    firstname = _firstname ,
    lastname = _lastname ,
    username = _username ,
    password = _password ,
    telephone = _telephone
    };

    اگه میخواید او 5 مقدار که عضو tb هست رو مقداردهی کنید نباید بعد از tbl_user tb=new tbl_user() حرف ; بذارید، پس این قسمت از کدتون میشه:
    tbl_user tb=new tbl_user()
    {
    firstname = _firstname ,
    lastname = _lastname ,
    username = _username ,
    password = _password ,
    telephone = _telephone
    };


    شما پروژه رو قرار بدید دوستان هم دانلود و بررسی کنن تا زودتر مشکلتون حل شه

  7. #7

    نقل قول: خطا هنگام درج اطلاعات در دیتابیس

    درست نشد
    فایل پروژه رو گذاشتم دیتابیسم 666 هست که تو پروژه هست
    فایل های ضمیمه فایل های ضمیمه

  8. #8
    کاربر دائمی آواتار pedram.11
    تاریخ عضویت
    اردیبهشت 1391
    محل زندگی
    پشت کامپیوتر
    پست
    394

    نقل قول: خطا هنگام درج اطلاعات در دیتابیس

    پروژه رو دانلود کردم، 2 جا مشکل داره، من با کانکت شدن با دیتابیس شما یکمی مشکل دارم و با برنامه نتونستم به دیتابیس متصل شم، واسه همین خودتون این مشکل رو حل کنید. شما قابلیت AUTO INCREMENT برای فیلد id رو true نکردید، وارد صفحه ی ویرایش جدول دیتابیس بشید. و توی تنظیمات مربوط به فیلد آیدی خاصیت های Is Identity و Identity Increment و Identity seed رو به ترتیب yes و 1 و 1 تغییر بدید، طبق تصویر:
    کد های مربوط به افزودن مقادیر هم:
    string _firstname = firstname.Text;
    string _lastname = lastname.Text;
    string _username = username.Text;
    string _password = password.Text;
    string _telephone = telephone.Text;
    var db = new DataClasses1DataContext();
    tbl_user tb=new tbl_user()
    {
    firstname = _firstname ,
    lastname = _lastname ,
    username = _username ,
    password = _password ,
    telephone = _telephone
    };

    db.tbl_users.InsertOnSubmit(tb);
    db.SubmitChanges();
    dataGridView1.DataSource =db.tbl_users;

  9. #9

    نقل قول: خطا هنگام درج اطلاعات در دیتابیس

    یه دنیا ممنون مشکلم حل شد دوست عزیز
    ولی تو قسمت ویرایش از این کد خطا می گیریه

    Input string was not in a correct format.




    private void button3_Click(object sender, EventArgs e)

    {

    string _firstname = firstname.Text;

    string _lastname = lastname.Text;

    string _username = username.Text;

    string _password = password.Text;

    string _telephone = telephone.Text;

    var db = new DataClasses1DataContext();

    int selected_index_id = int.Parse(dataGridView1.CurrentRow.Cells["id"].Value.ToString());



    var query = db.tbl_users.Where(c => c.id= selected_index_id).Single();

    query.firstname = _firstname;

    query.lastname = _lastname;

    query.username = _username;

    query.password = _password;

    query.telephone = _telephone;

    db.SubmitChanges();

    }

  10. #10
    کاربر دائمی آواتار pedram.11
    تاریخ عضویت
    اردیبهشت 1391
    محل زندگی
    پشت کامپیوتر
    پست
    394

    نقل قول: خطا هنگام درج اطلاعات در دیتابیس

    خدا رو شکر، شما خودتون برای فیلدها محدودیت 50 گذاشتید، یعنی در هر فیلد مقدار بیشتر از 50 حرف نمیتونید وارد کنید. اگه به متن بیشتر نیاز دارید مقدار 50 رو در NVarchar(50) بیشتر کنید و یا اگه میخواید به حداکثر اندازه تغییر بدید مقدار MAX قرار بدید. یعنی:
    NVarchar(MAX)

  11. #11

    نقل قول: خطا هنگام درج اطلاعات در دیتابیس

    سلام دوست عزیز
    از اونجایی که خودم خیلی گیر کردم و تو سایتای فارسی نتونستم که مشکلم رو حل کنم جوابشو از تو سایت های خارجی بدست آوردم و به عموم حضار میرسانم.
    نکته اصلی که باید بدونی اینه که ساختار LINQ در زمان Linq To Sql و در زمان اجرای دستورات Delete و Update به صورتی است که باید در جدولی که تعریف کردی
    ***یکی از ستون ها در جدول حتما حتما باید نوع primary key داشته باشه و درصورتی که نداشته باشی با پیغام >>

    linq Can't perform Create, Update, or Delete operations on 'Table(req)' because it has no primary key


    در زمان اجرای دستور در سایت خواهی شد.
    بدین منظور چند تا روش هست که بهت میگم:
    1- ایجاد یک primary key قلابی و بلا استفاده در جدول یعنی یک ستون حالا به هر اسمی مثله Counter تعریف کنی که خودش خود به خود یکی یک به مقدارش اضافه بشه و نوعش هم int در نظر بگیر و خاصیت identity spi... رو فعال کن.
    در عکس ببین
    linq.jpg

    و به این صورت دستورات linq به راحتی اجرا میشه البته این روش حرفه ای نیست ولی کار را اندازه.

    2-
    روش دوم نوشتن دستورات sql در داخل عبارت Strinq و اجرای اون توسط linq


    2. Create a Insert statement and execute using LINQ.
    SampleDataContextDataContext db = new SampleDataContextDataContext();
    string insertStatement = "Insert into Employee values('Experts', 'Comment','alpha.beta@gmail.com')";

    3- روش سوم که برای من کار نکرد ..............
    3. Create a store procedure and call the same from LINQ.
    SampleDataContextDataContext db = new SampleDataContextDataContext();
    db.InsertEmployeeData("Experts","Comment", "alpha.beta@gmail.com");
    Here I have created an store procedure with name InsertEmployeeData, and called it from the code. Simple and straight forward.



    اینم لینک راهنمایی این دو روش :
    http://www.a2zmenu.com/Blogs/LINQ/Ca...ary%20key.aspx

    االبته من از Visual Stadio 2008 ا و framework 3.5 استفاده میکنم در ورژن های بالاتر قابلیت های بیشتری هم هست.

    امیدوارم که کارتون راه بیافته من خودم یه روز الاف شدم گفتم خیرم به شما هم برسه.
    یه صلواتم بفرستید اگه دوست داشتید برای همه اموات
    آخرین ویرایش به وسیله okhovat.rad : جمعه 26 تیر 1394 در 16:33 عصر

تاپیک های مشابه

  1. خطای Can't find API database; API check not performed eclips
    نوشته شده توسط mirbehnam2 در بخش Android Studio
    پاسخ: 3
    آخرین پست: جمعه 17 مرداد 1393, 11:56 صبح
  2. خطای can not perform this operation
    نوشته شده توسط farzane_fn در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 9
    آخرین پست: پنج شنبه 23 مهر 1388, 03:42 صبح
  3. مشکل update or delet رکوردها پایگاه داده sql server 2000
    نوشته شده توسط mehr825 در بخش VB.NET
    پاسخ: 2
    آخرین پست: دوشنبه 17 مرداد 1384, 00:54 صبح
  4. خطای Opration Must Use an updateable Query
    نوشته شده توسط archi در بخش ASP.NET Web Forms
    پاسخ: 6
    آخرین پست: جمعه 13 شهریور 1383, 21:18 عصر
  5. پیغام خطای Can't find the installable ISAM
    نوشته شده توسط Microsoft.net در بخش VB.NET
    پاسخ: 4
    آخرین پست: پنج شنبه 20 آذر 1382, 12:40 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •