PDA

View Full Version : سوال: درست عمل نکردن دستور insert



group45
یک شنبه 12 اردیبهشت 1389, 20:49 عصر
سلام به همه دوستان
من یه مدیریت کتابخانه نوشتم که با اسکیوال کار میکنه.مشکل اینجاست که برای وارد کردن اعضا (insert)فورمم واسه بار اول بدون مشکل ثبت میکنه ولی واسه بعدش ارور میده و میگه که
@pass که آدرس پسورده رو میگه که وجود داره
!!!!!! تا دیروز همه چی درست بود فکر کنم به خاطر آپدیت های جدید ویندوز باشه

اینم کداش:




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

namespace library
{
public partial class Form5 : Form
{
public Form5()
{
InitializeComponent();
}

public SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Admi nistrator\Documents\Visual Studio 2005\Projects\library\library\db1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
public SqlCommand com = new SqlCommand();

public void load()
{
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
textBox4.Text = "";
}

private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" ||
textBox4.Text == "")
MessageBox.Show("لطفا تمام مقادیر را وارد کنید", "اخطار");
else
{
int allow;
com.CommandText = "select bnumber from book where bnumber=@bnumber";
com.Parameters.AddWithValue("@bnumber", textBox2.Text.Trim());
com.Connection = con;
con.Open();
allow = com.ExecuteNonQuery();
con.Close();
if (allow == -1)
{
com.CommandText = "insert into book (bname,bnumber,bwriter,bpublisher)values(@bname,@b n,@bwriter,@bpublisher)";
com.Parameters.AddWithValue("@bname", textBox1.Text.Trim());
com.Parameters.AddWithValue("@bn", textBox2.Text.Trim());
com.Parameters.AddWithValue("@bwriter", textBox3.Text.Trim());
com.Parameters.AddWithValue("@bpublisher", textBox4.Text.Trim());
com.Connection = con;
con.Open();
com.ExecuteNonQuery();
con.Close();
MessageBox.Show("کتاب جدید با موفقیت ثبت شد", "پیام");
load();
}
else
{
con.Close();
MessageBox.Show(" شماره کتاب وارد شده در دیتابیس موجوداست", "اخطار");
}
}
}

private void Form5_Resize(object sender, EventArgs e)
{
this.Size = new Size(303, 246);
}

private void Form5_Load(object sender, EventArgs e)
{
load();
}

private void textBox1_MouseClick(object sender, MouseEventArgs e)
{
textBox1.SelectAll();
}

private void textBox2_MouseClick(object sender, MouseEventArgs e)
{
textBox2.SelectAll();
}

private void textBox3_MouseClick(object sender, MouseEventArgs e)
{
textBox3.SelectAll();
}

private void textBox4_MouseClick(object sender, MouseEventArgs e)
{
textBox4.SelectAll();
}
}
}

group45
دوشنبه 13 اردیبهشت 1389, 09:24 صبح
هیچکی نی بگه مشکل از کجاست؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ :عصبانی++:

M.YasPro
دوشنبه 13 اردیبهشت 1389, 09:37 صبح
سلام
فیلد pas یکتا هست ؟

programer1389
دوشنبه 13 اردیبهشت 1389, 09:45 صبح
ببینید ایا کانکشن در موقع insert باز هست یا نه؟

group45
سه شنبه 14 اردیبهشت 1389, 00:27 صبح
سلام
فیلد pas یکتا هست ؟

متوجه نمیشم؟ منظورتون از یکتابودن چیه؟ تو کدهای مربوط به این فرم pass@ یک بار بیشتر نوشته نشده!!!!



ببینید ایا کانکشن در موقع insert باز هست یا نه؟

بله قبل اکزکیوت بازش کردم و بعد اون کلوزش کردم
آیا نیاز به con.dispose هست؟

mmd2009
سه شنبه 14 اردیبهشت 1389, 00:33 صبح
دوست عزیز به نظر من بهتره یک کد ریدر بذاری واسه برنام هاست و بگی اگر کد وارد شده کاربر درون بانک اطلاعاتی بود که بگه که کد مورد نظر شما در اختیار کتاب است با نام.....(یک متغیر بذار و اسم کتاب رو بذار داخلش) و اگر هم کد وارد شده مال کتابی نبود که ثبت بشه

M.YasPro
سه شنبه 14 اردیبهشت 1389, 08:12 صبح
اگر می گید که واسه بار اول ثبت می کنه و در ادامه ثبت نمی کنه و با توجه که متن کامل ارور رو نمی گید و فقط می گید که از @pass اشکال می گیره احتمال زیاد این فیلد رو (primary key ) گذاشتین و دارید داده تکراری بهش می فرستین .

group45
سه شنبه 14 اردیبهشت 1389, 08:54 صبح
با سلام
ببینید برنامه واسه ثبت کتاب اول کامل اجرا میشه ولی بعدش به تمام addwithvalue ها اخطار میده. حتی کلید اصلی رو هم برداشتم. دستوری نیست که همه add ها و مقادیرشون رو از رم پاک کنه؟؟ شاید اینجوری درست بشه!!!!!!!! این دیگه چه مشکلیه؟؟؟؟؟؟؟؟؟
اگرم خودتون کدای بهتری که این مشکل رو ندارن بزارید یه دنیا ممنون میشم

M.YasPro
سه شنبه 14 اردیبهشت 1389, 08:57 صبح
از اول می گفتین که از تمام پارامترها اشکال می گیره !

com.Parameters.Clear();