PDA

View Full Version : سوال: Invalid Object Name "table name "ERROR



msnlinux
چهارشنبه 27 آبان 1388, 13:54 عصر
سلام .
خسته نباشيد
من يك application نوشتم با c# كه ابتدا به بانك اطلاعاتي متصل ميشه و هنگام لود شدن فرم يك جدول مي سازه.
بعد با زدن يك دكمه فيلدهاي جدول داخل ديتا ريد نمايش داده مي شه.
من يك دفعه تست كردم اين كارو انجام داده شد
بعد دوباره جدول رو حذف كردم و بعدش دوباره تست كردم هنگام ولي هنگام پر كردن ديتا ست به من خطا ميده . اين خطا Invalid Object Name "table name
لطفا" راهنماييم كنيد.
ممنون
اين هم كدش




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;

using System.Data.SqlClient;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form

{
SqlConnection sqlcon = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename='D:\\Documen ts and Settings\\Administrator\\My Documents\\Visual Studio 2008\\Projects\\WindowsFormsApplication1\\WindowsF ormsApplication1\\Database1.mdf';Integrated Security=True;Connect Timeout=30;User Instance=True");
SqlDataAdapter sqladpt;
DataView dview;
// SqlCommand scom = new SqlCommand("CREATE TABLE a(stno char(8) primary key,fname char(20), lname char(50), id char(5));");

CurrencyManager cmanage;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
sqlcon.Open();
sqladpt = new SqlDataAdapter();
sqladpt.SelectCommand = new SqlCommand();
sqladpt.SelectCommand.Connection = sqlcon;
sqladpt.SelectCommand.CommandText = "SELECT * FROM a;";
sqladpt.SelectCommand.CommandType = CommandType.Text;
SqlCommandBuilder sqlcombuild = new SqlCommandBuilder(sqladpt);
DataSet dset = new DataSet();
sqladpt.Fill(dset, "a");
dataGridView1.DataSource = dset;
dataGridView1.DataMember = "a";
sqlcon.Close();
}
private void Form1_Load(object sender, EventArgs e)
{
try

{
SqlCommand scom = new SqlCommand("CREATE TABLE a(stno char(8) primary key,fname char(20), lname char(50), id char(5));", sqlcon);
MessageBox.Show("sucessful");
}
catch

{
MessageBox.Show("error");
}
}
}
}

Reza_Yarahmadi
چهارشنبه 27 آبان 1388, 14:44 عصر
شما توی لود فرم این دستور رو نوشتید:

try

{
SqlCommand scom = newSqlCommand("CREATE TABLE a(stno char(8) primary key,fname char(20), lname char(50), id char(5));", sqlcon);
MessageBox.Show("sucessful");
} توی خط اول یه Command ساختید ولی این جایی اونو execute نکردید! یعنی جدولی ساخته نمیشه که بعد جای دیگه درخواست واکشی اطلاعات از اون جدول رو کنید. احتمالا اگه دستورات اجرای این Command رو بنویسید درست بشه.

msnlinux
چهارشنبه 27 آبان 1388, 20:11 عصر
مشكل رو فهميدم ولي راه حلي به نظرم نمي رسه :عصبانی++:
توي قسمت لود فرم هستش
اگه كد رو ببينيد
scom.ExecuteNonQuery();
اين عبارت داخلش هست
اگر جدول وجود نداشته باشه درست كار مي كنه ولي اگه وجود داشته باشه نه.
يك دشتوري براي وجود يا عدم وجود جدول مي خوام كه چك كنه جدول وجود داره يا نه.
كسي اين دستور رو داره؟:گریه:
با تشكر از تمامي دوستان




private void Form1_Load(object sender, EventArgs e)
{
try

{
sqlcon.Open();
scom = new SqlCommand();
scom.Connection = sqlcon;
scom.CommandText = "CREATE TABLE b(stno char(8) primary key,fname char(20), lname char(50), id char(5));";
scom.ExecuteNonQuery();
sqlcon.Close();
MessageBox.Show("sucessful");
}
catch

{
MessageBox.Show("error");
}

}

saeedr22
چهارشنبه 27 آبان 1388, 20:49 عصر
مشکل از کد sql هستش.

msnlinux
چهارشنبه 27 آبان 1388, 21:12 عصر
مشکل از کد sql هستش.
اين چه مشكليه كه وقتي جدول وجود نداشته باشه درست كار مي كنه ؟
وقتي وجود داشته باشه نه ؟
راه حل ؟؟؟؟؟؟

hoorfar
چهارشنبه 27 آبان 1388, 21:34 عصر
وقتی جدول وجود نداره برنامه درست کار میکنه چون این اتفاق ها می افته
1.OnLoad فرم اجرا می شه و جدول ایجاد می شه
2.اطلاعات خوانده می شه و نمایش داده می شه

اما وقتی جدول وجود دارد
1.OnLoad اجرا می شه و سعی در ایجاد یک جدول به اسم b می کنه اما چون دفعه قبل این جدول ایجاد شده یک خطا از برنامه گرفته می شه که منظورش اینکه که شما سعی در ایجاد یک جدول دارید که قبلا ساخته شده (جدولی به این اسم وجود داره)


برای رفع مشکل برای ایجاد جدول دستور زیر رو پیشنهاد میدم



IF(NOT EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[b]') AND type in (N'U')))
CREATE TABLE b(stno char(8) primary key,fname char(20), lname char(50), id char(5));