PDA

View Full Version : اضافه کردن جدول در زمان اجرا و insert در آن



sepehr_sepehr
یک شنبه 15 شهریور 1388, 22:21 عصر
سلام.
چه جوری برای جداولی که در زمان اجرا با دستور create table به database اضافه میشن دستور insert بنویسم؟

mn_zandy63
دوشنبه 16 شهریور 1388, 06:33 صبح
:متفکر: مگه فرق میکنه؟ خب همون شکلی که برای بقیه مینویسی.

sepehr_sepehr
دوشنبه 16 شهریور 1388, 08:37 صبح
برای دستور insert باید اسم ستونهای جدول رو داشته باشیم.
حالا برای جدولی که در زمان اجرای برنامه خودش و ستونهاش ایجاد میشه چه جوری insert بنویسم.

mn_zandy63
دوشنبه 16 شهریور 1388, 10:01 صبح
مگه خودت اضافه نکردی؟ خب داری اسم ستونهارو دیگه.
Command رو برای Insert مینویسی و Insert میکنی. مشکلت دقیقا کجاست؟

ببینم داری از TableAdapter ها استفاده میکنی؟ که در زمان طراحی ساختی؟
نمیتونی با ساختن جدولها در زمان اجرا یه همچین چیزی داشته باشی.

Reza_Yarahmadi
دوشنبه 16 شهریور 1388, 10:46 صبح
در زمان اجرا هم وقتی میخوای جدولی درست کنی اسم فیلدها رو با دستور SQL به بانک ارسال میکنی. پس اسم فیلدها رو داری!!
Create Table TableName(Field1 nvarchar(50) not null, Field2 int, ...
اگه از همچین دستوری واسه ساخت جدول استفاده میکنی اسم فیلدها رو داری (Field1, Field2)

sepehr_sepehr
دوشنبه 16 شهریور 1388, 11:18 صبح
وقتی کاربر در زمان اجرا با زدن دکمه button 1 با نام دلخواهی که در textbox1 وارد کرده جدول ایجاد میکنه و با زدن button2 ستونهایی با نامی که در textbox2 وارد کرده به همون جدول اضافه میکنه خوب من اینا رو الان در اختیار ندارم که براش insert یا هر query دیگه ای بنویسم.
میتونم از متغیر برای نام جدول و ستون هاش استفاده کنم؟مثلا textbox3 به جای نام یک ستون مثلا firstname?????







private void button1_Click(object sender, EventArgs e)
{

if (textBox1.Text=="" )
MessageBox.Show("Table Name Is Null!Please Insert Table Name To This Textbox.", "Error Message");
else
{
SqlCommand Cmd = new SqlCommand();
Cmd.CommandText = "Insert into all_tables" + "( tbl_name)" + " values (@tbl_name)";
Cmd.Parameters.AddWithValue("@tbl_name", textBox1.Text);
Cmd.Connection = connection;
string strsql = "create table tbl_" + textBox1.Text + "(cl_id bigint identity(1,1) primary key)";
//SqlConnection connection = new SqlConnection(@"Data Source=your-6bbd24890a;Initial Catalog=info_table;Integrated Security=True;User Instance=false");
SqlCommand command = new SqlCommand();
command.Connection = connection;
command.CommandText = strsql;

connection.Open();
try
{
Cmd.ExecuteNonQuery();
MessageBox.Show("Your Table Name Accepted");
command.ExecuteNonQuery();
}
catch
{
MessageBox.Show("This Table is existing,Please Insert Other Name For Your Table");
}
finally
{
connection.Close();
}
/*command.ExecuteNonQuery();
connection.Close();*/
toolStripStatusLabel1.Text = "Table Added To DataBase";
}

}

private void Form1_Load(object sender, EventArgs e)
{
comboBox1.SelectedIndex = 1;
toolStripStatusLabel1.Text = "Ready";

}

private void button2_Click(object sender, EventArgs e)
{
if (textBox1.Text=="" || textBox2.Text =="")
MessageBox.Show("Field Name Or Table Name Is Null!Please Insert Field Name Or Table Name To Textbox.", "Error Message");
else
{
string strsql = "alter table tbl_" + textBox1.Text + " add cl_" + textBox2.Text + " " + comboBox1.SelectedItem;
string strsql2="insert into table_field"+"(tbl_name,tbl_field)"+"values(@tbl_name,@tbl_field)" ;
SqlCommand command = new SqlCommand();
SqlCommand command1 = new SqlCommand();
command1.Parameters.AddWithValue("@tbl_name",textBox1.Text);
command1.Parameters.AddWithValue("@tbl_field",textBox2.Text);
command1.Connection = connection;
command1.CommandText = strsql2;
command.Connection = connection;
command.CommandText = strsql;
connection.Open();
command.ExecuteNonQuery();
command1.ExecuteNonQuery();
connection.Close();
toolStripStatusLabel1.Text = "Field Added To Table";
}
}



all_table-------->جدولی که لیست همه table های موجود در database رو نگهداری میکنه.
table_field------->جدولی که لیست همه table ها رو به همراه field هاشو ن نگهداری میکنه.

sepehr_sepehr
سه شنبه 17 شهریور 1388, 08:06 صبح
شما رو به خدا کمک کنید.

mn_zandy63
چهارشنبه 18 شهریور 1388, 03:05 صبح
سلام دوست عزیز
خب تو که اسم همه فیلد ها و جدولها رو داری.
آره میتونه متغیر باشه اسامی فیلدها و جداول

اگه بگی چه کوئری میخوای بزنی شاید بتونم بهتر بهت کمک کنم.
موفق باشی

sepehr_sepehr
چهارشنبه 18 شهریور 1388, 08:30 صبح
میخوام insert و select بنویسم.

moferferi
چهارشنبه 18 شهریور 1388, 11:13 صبح
CREATE TABLE ExecuteQueryNoResultSet(
Id int NOT NULL PRIMARY KEY,
Field1 nvarchar(50) NOT NULL,
Field2 nvarchar(50) NOT NULL,
)



CREATE PROCEDURE Person.GetContacts
@RowCount int OUTPUT
AS
SET NOCOUNT ON
SELECT * FROM Person.Contact
set @RowCount = @@ROWCOUNT
RETURN @RowCount