PDA

View Full Version : آموزش: اضافه نشدن اطلاعات در sql سرور



darkface
چهارشنبه 20 دی 1391, 10:17 صبح
سلام بچه ها خوبین؟
ببخشید دوستان من نمیدونم کجای کارم مشکل داره اطلاعات ادد نمیشه

string constr = "Data Source=.;Initial Catalog=cc;integrated security=True";
SqlConnection objConnection = new
SqlConnection(constr);
objConnection.Open();

SqlCommand objCommand = new SqlCommand();

objCommand.Connection = objConnection;
objCommand.CommandText = "INSERT INTO gg " + "(text) " +
"VALUES(@text)";
SqlDataAdapter DA = new SqlDataAdapter("INSERT INTO gg " + "(text) " +
"VALUES(@text", objConnection);
objCommand.Parameters.AddWithValue("@text",
textBox2.Text);

alireza.zahani
چهارشنبه 20 دی 1391, 10:23 صبح
execut nonquery رو اضافه کردی؟

peymanjon
چهارشنبه 20 دی 1391, 10:26 صبح
سرچ کنید سریعتر به جواب می رسید ، تو کد شما دیگه احتیاجی به dataadaptor نیست که new کنید :



SqlConnection con_Site = new SqlConnection("SQL Connection");
string myInsertQuery = "Your query";
SqlCommand myCommand = new SqlCommand(myInsertQuery);

myCommand.Parameters.AddWithValue("@param", "Value");

myCommand.Connection = con_Site;
if (con_Site.State == ConnectionState.Closed)
{
con_Site.Open();
}
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();

darkface
چهارشنبه 20 دی 1391, 11:47 صبح
سرچ کنید سریعتر به جواب می رسید ، تو کد شما دیگه احتیاجی به dataadaptor نیست که new کنید :



SqlConnection con_Site = new SqlConnection("SQL Connection");
string myInsertQuery = "Your query";
SqlCommand myCommand = new SqlCommand(myInsertQuery);

myCommand.Parameters.AddWithValue("@param", "Value");

myCommand.Connection = con_Site;
if (con_Site.State == ConnectionState.Closed)
{
con_Site.Open();
}
myCommand.ExecuteNonQuery();
myCommand.Connection.Close();
سلام خسته نباشید
ولی من فکر میکنم توی گوئری مشکلی داشته باشه ؟؟ یا گوئری درست هست؟

peymanjon
چهارشنبه 20 دی 1391, 15:00 عصر
ولی من فکر میکنم توی گوئری مشکلی داشته باشه ؟؟ یا گوئری درست هست؟
SqlDataAdapter DA = new SqlDataAdapter("INSERT INTO gg " + "(text) " +
"VALUES(@text", objConnection);

پرانتز در آخر نبستی ؛ هم کوئری و هم نحوه اجرا کدinsert شما مشکل داره

کوئری insert اینجوری بنویس و پارامترها بهش پاس بده :

string myInsertQuery = "INSERT INTO table (P1,P2) values (@P1,@P2)";
myCommand.Parameters.AddWithValue("@P1", 123);\\integer
myCommand.Parameters.AddWithValue("@P2", "Public");\\string

samser
چهارشنبه 20 دی 1391, 15:28 عصر
سلام به دوستان حرفه ای...منم با نظر دوستان موافقم...اما بنظرم بهترین و راحت ترین کار برای درج و حذف وآپدیت نوشتن یه کلاسه...هم کد نویستو کم میکنه هم ضریب خطا ش صفره...
1.نوشتن ماژول.
2.وارد کردن رشته اتصال در ماژول.
3.استفاده از متد های setdata وgetdata ....


این کد ماژول(کلاس):



using System.Collections.Generic;
using System.Linq;
using System.Text;
using System;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;

namespace نام برنامه اصلی
{
class modul1
{
public static string connectionString =
"Data Source=رشته اتصال";
public static void SetData(string sqlStr)
{
SqlConnection mConnection = new SqlConnection(connectionString);
SqlCommand command = new SqlCommand(sqlStr, mConnection);
command.CommandType = CommandType.Text;
command.CommandText = sqlStr;
mConnection.Open();
try
{
command.ExecuteNonQuery();
}
catch (SqlException myerror)
{
MessageBox.Show("Error Conectin to Database:" + myerror.Message);

}
finally
{
mConnection.Close();
mConnection.Dispose();
}

}
public static DataTable GetData(string sqlCommand)
{
SqlConnection mConnection = new SqlConnection(connectionString);
SqlCommand command = new SqlCommand(sqlCommand, mConnection);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = command;
DataTable table = new DataTable();

try
{
adapter.Fill(table);
}
catch (SqlException myerror)
{
MessageBox.Show("Error Conectin to Database:" + myerror.Message);

}
finally
{

mConnection.Dispose();
}
return table;
}
}
}


حالا شما فقط تو برنامه اصلی متدهای getdata و setdata رو فراخونی کن...

modul1.SetData("INSERT INTO نام جدول(نام فیلدها)values(N'" + textBox1.Text + "' )");
کارکترN بخاطر این استفاده میشه که رشته تو جدول درج کنی بهمین دلیل از'" مقدار تکست باکس"' اگه نه بجای '" از " استفاده کن...
دوستان اگه من تو درج مطلب اشتباه ی دارم لطفا منو هم آگاه کنید...موفق باشی...

peymanjon
پنج شنبه 21 دی 1391, 17:37 عصر
با یه نگاه کلی مشخصه که کلاس شما در این حد که فقط 2 متد داره دارای new های بی جا زیادیست ، کلاس های قوی تر و بهینه شده در این سایت و دیگر سایت ها وجود داره (لطفاًً سرچ کنید).