PDA

View Full Version : مساوی بودن یک ستون جدول با یک متغییر در sql server



mahtab kf
یک شنبه 15 بهمن 1391, 19:05 عصر
سلام
دوستان من یک کلاس دارم که دو متغییر SQLTableName و name رو دریافت می کنه حالا می خوام با یک دستور تعداد فیلدهایی که ستون nameItem شون برابر name هست رو بدست بیارم پس کدم رو به صورت زیر نوشتم:


public int countall(string SQLTableName,string name)
{
...
string commandText55 = "select count(*)as mm from " + SQLTableName + " where NameItem="+ name;
SqlCommand cmdObj55 = new SqlCommand(commandText55, con);
SqlDataReader ddr = cmdObj55.ExecuteReader();
ddr.Read();
...
}

اما خطای زیرو می گیره:

Incorrect syntax near the keyword 'where'.ممنون میشم کمکم کنید

Reza_Yarahmadi
دوشنبه 16 بهمن 1391, 07:19 صبح
مشکل از TableName شماست. دستورتون رو بصورت زیر تغییر بدید در صورت درست نشدن مقدار SQLTableName رو چک کنید.
"select count(*)as mm from [" + SQLTableName + "] where NameItem="+ name

mahtab kf
دوشنبه 16 بهمن 1391, 23:49 عصر
ممنون از شما مشکلم حل شد ولی حالا خطای زیرو می گیره:

Invalid column name 'Cpu'.
که cpu در آن مقدار name هست که به تابع ارسال کردم

hdhd1110
سه شنبه 17 بهمن 1391, 00:00 صبح
select count(name jadval from Table)

hdhd1110
سه شنبه 17 بهمن 1391, 00:01 صبح
سلام شما در تایپ کد sql مشکل دارید با اون کدی که فرستادم مشکلتون حل میشه

baktash.n81@gmail.com
سه شنبه 17 بهمن 1391, 17:59 عصر
سلام دوست عزیز ...

خوب اگه نوع فیلد NameItem از انواع کارکتری باشه ... که احتمالا هست ...مقدار Name شما باید داخل ' ' قرار بگیره ... پس کدتون رو جوری اصلاح کنید که این اتفاق بیفته

اما از نظر خوانایی و امنیت بهتره از پارامتر استفاده کنید.

Select * from blah where itamename='name'

mahtab kf
چهارشنبه 18 بهمن 1391, 01:08 صبح
سلام دوست عزیز ...

خوب اگه نوع فیلد NameItem از انواع کارکتری باشه ... که احتمالا هست ...مقدار Name شما باید داخل ' ' قرار بگیره ... پس کدتون رو جوری اصلاح کنید که این اتفاق بیفته

اما از نظر خوانایی و امنیت بهتره از پارامتر استفاده کنید.

Select * from blah where itamename='name'
فیلد NameItem از نوع nvarchar هست واینم کد تابع منه، میشه لطفاً بیشتر برام توضیح بدید:

public int countall(string SqlTableName,string name)
{
using (SqlConnection con = new SqlConnection(ConnectionString))
{
con.Open();
string commandText55 = "select count(id)as mm from " + SqlTableName + " where NameItem="+name+"";
SqlCommand cmdObj55 = new SqlCommand(commandText55, con);
SqlDataReader ddr = cmdObj55.ExecuteReader();
ddr.Read();
int code22;
if (ddr.HasRows == true)
{
code22 = int.Parse(ddr["mm"].ToString());
con.Close();
return code22;
}
else
con.Close();
return 0;
}
}

Reza_Yarahmadi
چهارشنبه 18 بهمن 1391, 07:18 صبح
روش اول (روش بهتر)
SqlCommand cmdObj55 = new SqlCommand("select count(id)as mm from " + SqlTableName + " where NameItem = @Name", con);
cmdObj55.AddWithValue("@Name", name);
روش دوم
SqlCommand cmdObj55 = new SqlCommand("select count(id)as mm from " + SqlTableName + " where NameItem ='" + name + "'", con)
در ضمن سوالتون بیشتر مربوط به تالار #C می باشد. از ادامه بحث به این سبک خودداری کنید.