PDA

View Full Version : سرچ از یک جدول



جوان ایرانی
یک شنبه 14 اسفند 1390, 11:10 صبح
سلام
من دوتا جدول سمت sql دارم که یکی از اونها شامل فیلدهای کد موضوع وعنوان موضوع و جدول دیگه شامل کد سوال،سوال ،جواب وکدموضوع است وسمت سی شارپ یک فرم پرسش وپاسخ دارم که کاربر با وارد کردن کلمه مورد نظرش باید سوال وجواب شامل اون موضوع نمایش داده بشه من دوتا راهکار دارم یکی از طریق یه تابع سمت سرور وفراخوانیش سمت کلاینت به شکل زیر:
ALTER FUNCTION [dbo].[searchSubjectID]
( @keyword nvarchar(50)
)
RETURNS TABLE
AS
RETURN
(
Select Question.Question,Question.Answer from Question where SubjectID in
(
Select Subject.SubjectID from Subject where Title ='keyword'
))

که نمی دونم چجوری فراخوانیش کنم ودوم اینکه دقیقا دنبال کلمه ای میره که نوشته شده واین در سرچ چیز جالبی نیست

راهکار دیگم استفاده از view زیر است که این رو هم نمی دونم چجوری بهش مقدار بدم:
SELECT dbo.Question.Question, dbo.Question.Answer, dbo.Subject.Title
FROM dbo.Question INNER JOIN
dbo.Subject ON dbo.Question.SubjectID_FK = dbo.Subject.SubjectID
WHERE (dbo.Subject.Title LIKE N'%n
%')

والبته میشه کلا بی خیال سمت sql بشم ویه تابع معمولی سمت سی شارپ بنویسم که این کار هم کردم ولی تمام اطلاعات جدول Question ام رو در DataGridview نشون میشه (نه فقط اونی که سرچ شده)

ببخشید سوالام طولانی شد اگه کسی می تونه کمکم کنه خیلی ممنون میشم
فقط تو یکی از این سه روش هم اگه کمک کنید برام کافیه

جوان ایرانی
جمعه 11 فروردین 1391, 01:22 صبح
خودم مشکلم رو با پروسیجر حل کردم می ذارم بقیه دوستان استفاده کنن
ALTER PROCEDURE searchsubject
-- Add the parameters for the stored procedure here
@keyword nvarchar(50)
AS
BEGIN
Select Question.Question,Question.Answer from Question where SubjectID_FK in
(
Select Subject.SubjectID from Subject where Title Like'%'+@keyword+'%'
)
END
این هم فراخوانی اش سمت سی شارپ:
SqlConnection conn = null;
SqlDataReader rdr = null;
try
{
conn = new SqlConnection("Server=localhost;DataBase=QuestionAnswerBank;Integ rated Security=True");
conn.Open();
SqlCommand cmd = new SqlCommand("searchsubject", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@keyword", textBox5.Text));
rdr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Columns.Add("Question", typeof(string));
dt.Columns.Add("Answer", typeof(string));
DataRow dr;

int count = 0;
while (rdr.Read())
{
dr = dt.NewRow();
dr[0] = rdr["Question"];
dr[1] = rdr["Answer"];
dt.Rows.Add(dr);
count++;
}
dataGridView1.DataSource = dt;
textBox3.Text = count.ToString();

rdr.Close();
conn.Close();
}
catch (Exception exp)
{
MessageBox.Show("error : " + exp);
}
finally
{
}