PDA

View Full Version : سوال: خواندن نیمه اول جدول پایگاه داده



vahid.bz
جمعه 07 آبان 1395, 12:42 عصر
سلام
من چطور میتونم نیمه اول جدول رو بخونم؟

notlikeothers
یک شنبه 09 آبان 1395, 11:08 صبح
SELECT * FROM
(
SELECT TOP 50 PERCENT *


FROM [Table]


ORDER BY [Field] DESC
)
ORDER BY [Field] ASC

علیرضا5
یک شنبه 09 آبان 1395, 16:10 عصر
سلام
بنده برای انتخاب ردیف مثلا 20 تا 30 از دیتابیس کد زیر را پیدا کرده ام ولی متوجه سرو تهش نمی شوم
لطفا توضیح بفرمائید


SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY ColumnName) AS MyRowNumber, *
FROM TableName) tbl
WHERE MyRowNumber BETWEEN 20 AND 30



خصوصا راجع به این تیکه TableName) tbl

با تشکر

vahid.bz
یک شنبه 09 آبان 1395, 16:36 عصر
از field دوم ایراد میگیره

notlikeothers
یک شنبه 09 آبان 1395, 17:31 عصر
سلام
بنده برای انتخاب ردیف مثلا 20 تا 30 از دیتابیس کد زیر را پیدا کرده ام ولی متوجه سرو تهش نمی شوم
لطفا توضیح بفرمائید


SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY ColumnName) AS MyRowNumber, *
FROM TableName) tbl
WHERE MyRowNumber BETWEEN 20 AND 30



خصوصا راجع به این تیکه TableName) tbl

با تشکر
اون tbl الیاس میگن بهش.ینی اون سلکت کلا اسمش میشه Tbl

notlikeothers
یک شنبه 09 آبان 1395, 17:31 عصر
از field دوم ایراد میگیره
چه ایرادی؟؟ متن ارور رو بزارید

علیرضا5
یک شنبه 09 آبان 1395, 23:02 عصر
خوب الان اینطوری نوشتم چرا خطا میده



OleDbCommand cmda = new OleDbCommand("SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY shsh) AS MyRowNumber, * FROM bankstudent) tbl WHERE MyRowNumber BETWEEN 20 AND 30");

notlikeothers
دوشنبه 10 آبان 1395, 08:23 صبح
شما مطمینی اسم تیبل و ستون هات اینی هس که نوشتی؟؟؟بیشتر میخوره مثال اموزشی باشه
بعدش ارور میده که کسی نمیتونه کمک کنه تا وقتی که متن ارور بزاری

علیرضا5
دوشنبه 10 آبان 1395, 09:46 صبح
در مثال بنده فقط shsh و bankstudent رو تغییر دادم
اگر ممکنه یکی نمونه بنویسید

Mag-Mag
سه شنبه 11 آبان 1395, 15:14 عصر
خوب الان اینطوری نوشتم چرا خطا میده



OleDbCommand cmda = new OleDbCommand("SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY shsh) AS MyRowNumber, * FROM bankstudent) tbl WHERE MyRowNumber BETWEEN 20 AND 30");



اگر جدولی به نام bankstudent و در این جدول فیلدی به نام shsh دارید ، کیوری درسته
متن خطا رو بزارید
احتمالا خطا واسه مشکل دیگری هست

علیرضا5
سه شنبه 11 آبان 1395, 17:10 عصر
خدمت شما



OleDbCommand cmda11 = new OleDbCommand("SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY olaviatt) AS MyRowNumber, * FROM aghahiha) tbl WHERE MyRowNumber BETWEEN 20 AND 30");
myReader = cmda11.ExecuteReader();


البته کیوری بنده با سلکت های دیگه درست کار میکنه

Mag-Mag
چهارشنبه 12 آبان 1395, 08:26 صبح
ببین مشکل سر اینه که کبوری شما هیچ رکوردی بر نمی گردونه
بعد اون دستور while که بعدش نوشتید ، مشکل ساز میشه

کدتون رو داخل try catch بزارید یا


if(mtReader!=null)

رو قبل از while چک کنید

کیورتون رو مستقیم توی اس کیو ال اجرا کنید
مطمئن بشید مقدار داره

علیرضا5
چهارشنبه 12 آبان 1395, 14:57 عصر
ببین مشکل سر اینه که کبوری شما هیچ رکوردی بر نمی گردونه
بعد اون دستور while که بعدش نوشتید ، مشکل ساز میشه

کدتون رو داخل try catch بزارید یا



چرا نباید هیچ ریکوردی رو برگردونه
تو پست بالایی هم نوشتم دقیقا همین کد با سلکت های دیگه درست کار میکنه مثلا این
select TOP 4 * from aghahiha
یا هر سلکت دیگه

با if (myReader != null) هم چک کردم دقیقا همون خطا رو میده

لطفا یک نمونه سلکت از پروژه های خودتون بگذارید که ردیف مثلا 20 تا 30 رو انتخاب می کنه
با تشکر

Mag-Mag
چهارشنبه 12 آبان 1395, 15:17 عصر
143289

من فقط BETWEEN 0 AND 30 زدم چون جدولم 2 تا رکورد بیشتر نداشت

اگر مطمئنی دیتا داری
ممکنه از کانکشن استرینگت باشه
ببین OleDbConnection رو مشخص کردی؟
در واقع کدت باید اینطوری باشه


System.Data.OleDb.OleDbConnection cn = new System.Data.OleDb.OleDbConnection("مسیر کانکشن استرینگتون");
System.Data.OleDb.OleDbCommand cmda11 = new System.Data.OleDb.OleDbCommand(Query,cn);


در کل اینجور مواقع سعی کن کدت رو اینطوری در try catch بنویسی که بتونی Exception خوب و کامل و دقیقتر ببینی


try
{
System.Data.OleDb.OleDbConnection cn = new System.Data.OleDb.OleDbConnection("مسیر کانکشن استرینگتون");
System.Data.OleDb.OleDbCommand cmda11 = new System.Data.OleDb.OleDbCommand(Query,cn);
System.Data.OleDb.OleDbDataReader dra = cmda11.ExecuteReader();
}
catch(Exception ex)
{
Response.Write("*** : " + ex.Message);
}

علیرضا5
چهارشنبه 12 آبان 1395, 16:58 عصر
متشکرم
بنده به اینصورت نوشتم

System.Data.OleDb.OleDbConnection cn = new System.Data.OleDb.OleDbConnection("SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY olaviatt) AS MyRowNumber, * FROM aghahiha) tbl WHERE MyRowNumber BETWEEN 0 AND 30");
System.Data.OleDb.OleDbCommand cmda11 = new System.Data.OleDb.OleDbCommand(Query, cn);


که زیر کلمه Query خط قرمز میکشه
که البته با try catch هم با همون خطای Query رو میده

من حدس می زنم یکی از using ها شاید ناقص باشه
این using های منه ملاحظه بفرمائید


using System;
using System.Collections.Generic;
using System.Data.OleDb;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Globalization;
using System.Web.UI.HtmlControls

علیرضا5
چهارشنبه 12 آبان 1395, 21:10 عصر
لطفا این پروژه رو چک کنید ببینید چرا درست کار نمیکنه

Mag-Mag
پنج شنبه 13 آبان 1395, 08:35 صبح
باتن 2 که درست کار میکنه برای اینه که کانکشنش مشخص شده

OleDbCommand cmda1 = new OleDbCommand("SELECT top 10 * FROM [karbaran] ORDER BY [name] ASC", connection);


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


OleDbCommand cmda1 = new OleDbCommand("SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY name) AS MyRowNumber, * FROM karbaran) tbl WHERE MyRowNumber BETWEEN 20 AND 30",connection);


مشکل بعدی اینه که شما دیتابیست اکسس هست
و دستور ROW_NUMBER() مال SQL هست
من متاسفانه نمیدونم اکسس چنین دستوری داره یا نه

تا ظهر یه سرچی بزنم ، بهت خبر میدم

Mag-Mag
پنج شنبه 13 آبان 1395, 10:07 صبح
یه همچین دستوری باید بنویسی
یعنی باید یه جوری اون Row_Number رو شبیه سازی کنی ، به نظرم


protected void Button1_Click(object sender, EventArgs e)
{
connection.Open();
OleDbCommand cmda1 = new OleDbCommand("SELECT TOP 10 * "
+"FROM ( "
+" SELECT TOP 20 * "
+" FROM [karbaran] "
+" ORDER BY [name] ) t "
+ "ORDER BY [name] DESC",connection);
myReader = cmda1.ExecuteReader();
Label2.Text = "";
while (myReader.Read())
{
Label2.Text += myReader.GetString(1);
Label2.Text += string.Format("<br/>");
}
myReader.Close();
connection.Close();
}