PDA

View Full Version : مشکل تو تابع insert



tefos666
شنبه 22 فروردین 1388, 20:45 عصر
سلام - دوستان من یه مشکل کوچیک دارم من یه تابع نوشتم به صورت زیر



public class NewsAction
{
public void insert(string tarikh, string sharh, string matn, string link)
{
System.Data.SqlClient.SqlConnection cnn = new System.Data.SqlClient.SqlConnection();
cnn.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\datacenter.mdf;Integrated Security=True;User Instance=True;";
System.Data.SqlClient.SqlCommand sc = new System.Data.SqlClient.SqlCommand();
sc.CommandType = CommandType.StoredProcedure;
sc.CommandText = "insert_news";
//sc.Parameters.AddWithValue("@id", id);
sc.Parameters.AddWithValue("@tarikh", tarikh);
sc.Parameters.AddWithValue("@sharh", sharh);
sc.Parameters.AddWithValue("@matn", matn);
sc.Parameters.AddWithValue("@link", link);
sc.Connection = cnn;
sc.Connection.Open();
sc.ExecuteNonQuery();
cnn.Close();
cnn.Dispose();
}

و از اون به صورت زیر استفاده میکنم



protected void Button3_Click(object sender, EventArgs e)
{
NewsAction param = new NewsAction();
param.insert(TextBox1.Text.ToString(),TextBox2.Tex t.ToString(),TextBox3.Text.ToString(),TextBox4.Tex t.ToString());
}


حالا نمیدونم چرا error زیر رو میده



Could not find stored procedure 'insert_news'.

خودم چندتا حدس زدم ولی نمیتونم حلش کنم
1- من فکر کردم چون فیلد id من کلید هستش و اون رو قرار ندادم اینجوری میشه و autonumber هم هستش
2- وقتی یک دیتاسورس در حالت ویزارد تعریف میشه ما میتونیم تو قسمت advanced تیک های اون رو بزنیم تا اجازه برای update , insert , delete رو صادر کنیم ولی اینجا من نتونستم

لطفا اگر کسی میتونه کمک کنه .

tefos666
شنبه 22 فروردین 1388, 21:05 عصر
دوستان - مرسی جواب رو پیدا کردم - انگار یه سهل انگاری کوچیک کرده بودم جواب رو مینویسم تا اگر کسی مثل من مشکل پیدا کرد این تاپیک به دردش بخوره

من یادم رفته بود استور پروسیجر رو که اسمش رو نوشتم به بانک اطلاعاتیم اضافه کنم



sc.CommandText = "insert_news";
که اونو تو قسمت مربوطه اضافه کردم و واسه حل مشکل بعدی فیلد آی دی رو هم از تو پروسیجر حذف کردم که اونم رفع شد


ALTER PROCEDURE [insert_news]
(
@tarikh [varchar](10),
@sharh [varchar](10),
@matn [varchar](6),
@link [varchar](10))
AS
INSERT INTO [dbo].[tbl_LastNews]
(
[tarikh],
[sharh],
[matn],
[link])


VALUES
(
@tarikh,
@sharh,
@matn,
@link)
RETURN

در نهایت کد درست به صورت زیر شد



public void insert(string tarikh, string sharh, string matn, string link)
{
System.Data.SqlClient.SqlConnection cnn = new System.Data.SqlClient.SqlConnection();
cnn.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\datacenter.mdf;Integrated Security=True;User Instance=True;";
System.Data.SqlClient.SqlCommand sc = new System.Data.SqlClient.SqlCommand();
sc.CommandType = CommandType.StoredProcedure;
sc.CommandText = "insert_news";
sc.Parameters.AddWithValue("@tarikh", tarikh);
sc.Parameters.AddWithValue("@sharh", sharh);
sc.Parameters.AddWithValue("@matn", matn);
sc.Parameters.AddWithValue("@link", link);
sc.Connection = cnn;
sc.Connection.Open();
sc.ExecuteNonQuery();
cnn.Close();
cnn.Dispose();
}

و اینطوری هم استفاده شد



protected void Button3_Click(object sender, EventArgs e)
{
NewsAction param = new NewsAction();
param.insert(TextBox1.Text.ToString(),TextBox2.Tex t.ToString(),TextBox3.Text.ToString(),TextBox4.Tex t.ToString());
}
مرسی - نخندین ها!!!!! خودم سوال کردم خودم هم جواب دادم :بامزه:

فقط یک سوال - اونم اینکه چرا بعد از Post شدن تو گرید اطلاعاتم نشون داده نمیشه حتما باید یکبار دیتابیس رو دیسکانکت و کانکت کنم تا اطلاعات جدید رو ببینم ؟