PDA

View Full Version : به دست آوردن نام جداول یک دیتابیس و فیلدهای آن جدول



test18000
یک شنبه 21 خرداد 1391, 10:55 صبح
با سلام
چجوری میشه جداول یک دیتابیس و همچنین فیلدهای آن جدول را به دست آورد

ahmadreza517
یک شنبه 21 خرداد 1391, 13:26 عصر
به نام تنها برنامه نویس هستی
سلام ,

برای بدست آوردن لیست Database ها در Sql Server از این می تونید استفاده کنید.

test18000
یک شنبه 21 خرداد 1391, 13:54 عصر
من می خوام لیست جداول دیتابیس هارو داشته باشم نه لیست دیتابیس هارو

hhsaffar
یک شنبه 21 خرداد 1391, 14:07 عصر
سلام

فرض کنیم اسم کانکشنتون conn باشه، از کد زیر استفاده کنید:

DataTable t = conn.GetSchema("Tables");

test18000
یک شنبه 21 خرداد 1391, 14:15 عصر
حالا چجوری میشه اسم فیلدهای یک جدول رو به دست آورد

hhsaffar
یک شنبه 21 خرداد 1391, 14:30 عصر
از این کوئری برای بدست آوردن نام فیلدها میشه استفاده کرد:

"SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('dbo.tablename')"

این کوئری مختصرتر و مرتبتر نتایج رو به شما نشون میده:


SELECT column_name, data_type, character_maximum_length, table_name,ordinal_position, is_nullable
FROM information_schema.COLUMNS WHERE table_name LIKE 'YOUR_TABLE_NAME'
ORDER BY ordinal_position

کوئریها رو از اینجا نقل میکنم: http://stackoverflow.com/questions/1054984/get-columns-of-a-table-sql-server

test18000
یک شنبه 21 خرداد 1391, 15:01 عصر
میشه تو یه برنامه کوچک بهم نشون بدین

hhsaffar
یک شنبه 21 خرداد 1391, 17:23 عصر
قبل از خوندن این پست خیلی بهتره که تلاش کنید از پاسخهای قبلی به نتیجه برسید، برای تجربه برنامه‌نویسیتون خیلی بهتره. اگر به نتیجه نرسیدید ادامه مطلب رو بخونید.
این یک برنامه کنسول هست که تمام جدولهای یک دیتابیس رو در میاره و اطلاعات فیلدهاش رو چاپ میکنه. من از دیتابیس SQL Server استفاده کردم و ممکنه در مورد نرم‌افزارهای پایگاه داده دیگه لازم باشه قدری تغییر بدید.
برنامه تغییر یافته برنامه دومی هست که در این لینک وجود داره: http://support.microsoft.com/kb/310107


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace TestDB
{
class Program
{
static void Main(string[] args)
{
SqlConnection cn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
DataTable schemaTable;
SqlDataReader myReader;

//Open a connection to the SQL Server Northwind database.
cn.ConnectionString = "TYPE YOUR CONNECTION STRING HERE";
cn.Open();
DataTable Tables = cn.GetSchema("Tables");
//Retrieve records from the Employees table into a DataReader.
cmd.Connection = cn;

foreach (DataRow myTable in Tables.Rows)
{
Console.WriteLine("TableName: "+ myTable["TABLE_NAME"]);
Console.WriteLine("------------------------------------------");

cmd.CommandText = "SELECT * FROM "+myTable["TABLE_NAME"];

myReader = cmd.ExecuteReader(CommandBehavior.SchemaOnly);

//Retrieve column schema into a DataTable.
schemaTable = myReader.GetSchemaTable();

//For each field in the table...
foreach (DataRow myField in schemaTable.Rows)
{
//For each property of the field...
foreach (DataColumn myProperty in schemaTable.Columns)
{
//Display the field name and value.
Console.WriteLine(myProperty.ColumnName + " = " + myField[myProperty].ToString());
}
Console.WriteLine();

//Pause.
//Console.ReadLine();
}

//Always close the DataReader and connection.
myReader.Close();

Console.WriteLine("==========================================");

}
cn.Close();

}
}
}

test18000
دوشنبه 22 خرداد 1391, 09:09 صبح
اگر بخوام فقط اسم ستون رو تنها نشون بده وبقیه propretise ها رو نیاره باید چیکار کنم

test18000
دوشنبه 22 خرداد 1391, 09:31 صبح
با این کد مشکلم حل شد
if (myProperty.ColumnName.ToString() == "ColumnName")
{
cmbField.Items.Add(myField[myProperty].ToString());
}