PDA

View Full Version : سوال: دسترسی مستقیم به جدول sql server با شماره سطر و ستون !



mehran6764
سه شنبه 15 مرداد 1392, 06:46 صبح
static void HasRows(SqlConnection connection) { using (connection) { SqlCommand command = new SqlCommand( "SELECT CategoryID, CategoryName FROM Categories;", connection); connection.Open(); SqlDataReader reader = command.ExecuteReader(); if (reader.HasRows) { while (reader.Read()) { Console.WriteLine("{0}\t{1}", reader.GetInt32(0), reader.GetString(1)); } } else { Console.WriteLine("No rows found."); } reader.Close(); } }





با استفاده از کد بالا (( با افزودن یه خط به کد )) می تونم مقدار سطر و ستونی رو که میخوام بدست بیارم
ولی فکر می کنم باید دستوری باشی که مستقیما" به یک شماره سطر و ستون از جدول اشاره کنه و مقداری رو بدست بیاره مثلا بگم از جدول table سطر 1 و ستون 3 رو در متغیر I قرار بده

hamid_hr
سه شنبه 15 مرداد 1392, 08:54 صبح
برا سطر خاص تو Sql server بايد اول داده ها رو براساس يك ستون مرتب كني بعد RowNumber بزاري بعد بگي سطر شماره N رو برام بيار مثل اين
ELECT *
FROM (
SELECT
t.*, ROW_NUMBER() OVER (ORDER BY field1) AS rn
FROM table1 t
ORDER BY
field1
) t
WHERE rn = 10

مثلا اين سطر دهم لود ميكنه

mehran6764
سه شنبه 15 مرداد 1392, 12:24 عصر
ممنون ، اما منظور من این بود که همراه با سطر ستون هم تعیین بشه - مثلا اینکه بگیم برو به ستون 1 ، سطر سوم - مقدار این سلول رو نشون بده

hamid_hr
سه شنبه 15 مرداد 1392, 12:45 عصر
خب به جاي * نام column رو بزار

مهرداد صفا
سه شنبه 15 مرداد 1392, 17:22 عصر
با سلام.
استفاده از DataSet و DataTable برای شما مناسبتر به نظر می رسد.
برای گرفتن داده ها در یک DataTable:
System.Data.SqlClient.SqlDataAdapter adapter = new System.Data.SqlClient.SqlDataAdapter("select * from table;", "connectionString...");
System.Data.DataTable table = new DataTable();
adapter.Fill(table);[/


برای دسترسی به سطر و ستون مشخص:

MessageBox.Show(table.Rows[rowindex][columnIndex].ToString());
//or
MessageBox.Show(table.AsEnumerable().ElementAt(row index)[columnIndex].ToString());

veniz2008
سه شنبه 15 مرداد 1392, 19:49 عصر
سلام.
راه اصولی اینه که فیلتر در سمت sql انجام بشه نه اینکه همه رکوردها برگشت داده بشن و داخل دیتاتیبل ریخته بشن و بعد سمت سی شارپ این دیتاتیبل رو فیلتر کنیم. همچنین دیتاتیبل شی ای هست که از رم سیستم استفاده میکنه بنابراین باید در استفاده از اون دقت لازم رو داشت و بی جهت تعداد رکورد زیادی رو درون اون نریخت.
موفق باشید.