PDA

View Full Version : سوال: مشکل کد ویرایش کاربر کجاست؟؟؟؟



raha1234567
سه شنبه 22 فروردین 1391, 10:05 صبح
سلام دوستان من این تاپیک رو یکبار گذاشتم و به لطف مدیر حذف شده.
ولی من دوباره میگذارم.
من در سایتم یک ویرایش اطلاعات کاربر دارم که کدش رو زیر مینویسم
چند تا مشکل داره.:
1. اول جایی که بهش میگم مقدار idUSER رو برگردون در TEXT مورد نظر بجای IDUSER مقدار نام کاربری رو میذاره داخلش
2. در شرط هام هم اگه ID USER رو شرط بذارم اصلا اجرا نمیده
3. حالا هم که با نام کاربری کار میکنم بازم اجرا نمیده هنگام ویرایش؟؟؟؟؟؟؟؟؟؟؟
و ایراد زیر رو میگیره.
Incorrect syntax near '222'.
Unclosed quotation mark after the character string ''.
و این ایراد رو از
com.ExecuteNonQuery();
وقتی دکمه ویرایش رو میزنم میگیره




private void edit_txt()
{
string us = Session["username"].ToString();
string id = Session["iduser"].ToString();
tbiduser.Text = id;
string con1 = "server=.;database=shahinshahr;integrated security=true";
string edit1 = "SELECT iduser as[ ], name as[ ],username as[ ],password as[ ],email as[], sing as[],job as[] FROM member WHERE username='" + us + "' ";

SqlConnection con = new SqlConnection(con1);
con.Open();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(edit1, con1);
da.Fill(ds, "user");
GridView1.DataSource = ds.Tables["user"];
GridView1.DataBind();
tbiduser.Text = ds.Tables["user"].Rows[0][0].ToString();
tbname.Text = ds.Tables["user"].Rows[0][1].ToString();
tbusername.Text = ds.Tables["user"].Rows[0][2].ToString();
tbpassword.Text = ds.Tables["user"].Rows[0][3].ToString();
tbemail.Text = ds.Tables["user"].Rows[0][4].ToString();
tbsing.Text = ds.Tables["user"].Rows[0][5].ToString();
tbjob.Text = ds.Tables["user"].Rows[0][6].ToString();


con.Close();
}

protected void Page_Load(object sender, EventArgs e)
{
string id = Session["iduser"].ToString();

string us = Session["username"].ToString();
tbusername.Text = us;
// tbusername.Enabled = false;
string con1 = "server=.;database=shahinshahr;integrated security=true";
string edit1 = "SELECT iduser as[ ], name as[ ],username as[ ],password as[ ],email as[], sing as[],job as[] FROM member WHERE iduser='" + id+ "' ";

SqlConnection con = new SqlConnection(con1);
con.Open();
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(edit1, con1);
da.Fill(ds, "user");
GridView1.DataSource = ds.Tables["user"];
GridView1.DataBind();

con.Close();
}

protected void Button2_Click(object sender, EventArgs e)
{
edit_txt();
}




protected void tbiduser_TextChanged(object sender, EventArgs e)
{
}
protected void btnedit_Click(object sender, EventArgs e)
{
string us = Session["username"].ToString();
string id = Session["iduser"].ToString();
string con1 = "server=.;database=shahinshahr;integrated security=true";
SqlConnection con = new SqlConnection(con1);
//con.Open();

SqlCommand com = new SqlCommand("UPDATE memeber SET name=@name, username=@username,password=@password, email=@email,sing='@sing,job=@job WHERE iduser='" + id + "'", con);

com.Parameters.AddWithValue("@name", tbname.Text);
com.Parameters.AddWithValue("@username", tbusername.Text);
com.Parameters.AddWithValue("@password", tbpassword.Text);
com.Parameters.AddWithValue("@email", tbemail.Text);
com.Parameters.AddWithValue("@sing", tbsing.Text);
com.Parameters.AddWithValue("@job", tbjob.Text);
con.Open();
com.ExecuteNonQuery();
con.Close();
lblmessage.Visible = true;
lblmessage.Text = " ";
edit_txt();


}
}

sarapepors
سه شنبه 22 فروردین 1391, 10:14 صبح
این خطا برا کوئری هست که نوشتین شما یه سینگل کوت رو نبستین برا updatequery به sing='@sing دقت کنید بازش کردین ولی نبستینش.

raha1234567
سه شنبه 22 فروردین 1391, 10:22 صبح
از کمکتون ممنون.
بله شما درست میگید ولی هنوزم ایراد رو میگیره.

sarapepors
سه شنبه 22 فروردین 1391, 10:56 صبح
از کمکتون ممنون.
بله شما درست میگید ولی هنوزم ایراد رو میگیره.

سینگل کوت رو از اون قسمت برداشتین ؟ باز همون ارور رو میده در هر صورت این ارور با کامندتون ربط داره . ایم 222 مقدار کدوم پارامتره ؟

raha1234567
سه شنبه 22 فروردین 1391, 11:03 صبح
بله برداشتم.
مقدار نام کاربری هست.

sarapepors
سه شنبه 22 فروردین 1391, 13:11 عصر
برای این که متوجه بشید کجای کامندی که نوشتین ایراد داره اول در یک متغیر از نوع رشته قرار بدینش و اون رو چک کنید .

bftarane
سه شنبه 22 فروردین 1391, 16:47 عصر
اون []as ها که نوشتيد کارشون چي هست؟ من دنبالش گشتم همچين چيزي پيدا نکردم.
ولي تو کتاب آقاي قمي و عباس نژاد يه همچين چيزي ديدم.

SELECT stNo,sum(Grade)/count(stNo) as 'Average'
FROM Grade
Group By stNo
HAVING stNo > '10'

چرا از کدي مثل زير استفاده نکرديد؟

SELECT idUser, name, username From member where username='us';
چرا به جاي 'us' از
'" + us + "' استفاده کرديد؟
خوب us خودش رشته است طبق کدي که خودتون نوشتيد چرا دوباره بايد دو تا دابل کوت بهش اضافه بشه؟

raha1234567
سه شنبه 22 فروردین 1391, 18:10 عصر
بین دو براکت عنوان جدول رو نوشتم مثلا id user گذاشتم شماره کاربری

کدی که شما نوشتید کار کد من رو میکنه

+ها هم برای اتصال هست

من فکر میکنم که ایراد از قسمت btnedit هست بقیه کد ها رو برا اطلاع شما گذاشتم/

من برداشتم update , set رو با حروف کوچیک نوشتم حالا این ایراد رو میگیره

Incorrect syntax near '='.

bftarane
سه شنبه 22 فروردین 1391, 21:11 عصر
نه با همون حروف بزرگ درست بود SET و UPDATE.
هر چي هست فکر ميکنم به طرز نوشتن id و اون " و ' ها بستگي داشته باشه.
ببين اگه شبيه لينک زير کد بنويسي مشکل حل ميشه؟ منظورم اينه که از id@ استفاده کني.
http://stackoverflow.com/questions/6043210/incorrect-syntax-near-8-error-when-using-update-query
اون قسمت که تيک سبز زده. اونطوري اگه جواب داد حداقل به ريشه مشکل نزديک ميشي.

raha1234567
چهارشنبه 23 فروردین 1391, 09:48 صبح
دوست عزیز از این که اینقدر کمکم می کنی ممنون ولی درست نشد.:افسرده:

bftarane
چهارشنبه 23 فروردین 1391, 11:16 صبح
سلام. ببين اومدم کدات رو تو يه وب سايت جديد کپي کردم متوجه شدم protected void رو به هم چسبيده نوشتي يعني: (protectedvoid)
سريع ارور داد جالبه که براي شما در اين مورد ارور نداده.
البته شايد مشکل از اين نباشه ولي درستش کن ببين چي ميشه.
منم اگه به جواب رسيدم اطلاع ميدم.

نمي دونم اين حرفه اي ها کجان که بيان با يه نگاه مشکل رو بگن.

raha1234567
چهارشنبه 23 فروردین 1391, 11:28 صبح
از شما ممنونم ولی این چیزا وقتی کپی کردم ریخته بهم و در بنامه درسته.

bftarane
چهارشنبه 23 فروردین 1391, 12:02 عصر
ببين يه جدول درست کردم به اسم member با دو فيلد iduser و name دستي پر کردم جدول رو.
يه تکست باکس و يه باتن اضافه کردم و کدهاي زير رو نوشتم. به id دستي مقدار "1" دادم. (iduser اولين نفر 1 هست) امتحان کردم ويرايش انجام شد.


protected void btnedit_Click(object sender, EventArgs e)
{
//string us = Session["username"].ToString();
//string id = Session["iduser"].ToString();
string id = "1";
string con1 = ConfigurationManager.ConnectionStrings["myconnectionstring"].ConnectionString;
SqlConnection con = new SqlConnection(con1);
//con.Open();

SqlCommand com = new SqlCommand("UPDATE member SET name=@name WHERE iduser='" + id + "'", con);

com.Parameters.AddWithValue("@name",tbname.Text);
//com.Parameters.AddWithValue("@username", tbusername.Text);
//com.Parameters.AddWithValue("@password", tbpassword.Text);
//com.Parameters.AddWithValue("@email", tbemail.Text);
//com.Parameters.AddWithValue("@sing", tbsing.Text);
//com.Parameters.AddWithValue("@job", tbjob.Text);
con.Open();
com.ExecuteNonQuery();
con.Close();
//lblmessage.Visible = true;
//lblmessage.Text = " ";
//edit_txt();

}
پس مشکل احتمالاً در قسمتهايي هست که من به صورت توضيح درآوردم. ببين کمکي ميکنه؟

فقط يه چيزي به ذهنم رسيد شما نوشته بودي UPDATE memeber. اسم جدولت همينه؟ member نيست؟ يه سري به نظرم اسامي جدولهات و فيلدهات رو چک کني ببيني با کدبيهايند مطابقت داشته باشه بد نيست.

اينم فايل ضميمه مي کنم شايد لازم شد.
فقط Connection Strign رو در web.config بايد تغيير بدي.