PDA

View Full Version : سوال: فوری :انتقال همه سطر های یک دیتاگرید به بانک



ali2121
چهارشنبه 16 اسفند 1391, 22:37 عصر
درود

من میخوام همه سطر های یک دیتاگرید را در بانک ذخیره کنم

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

ممنون میشم کمکم کنید

saeedgholami
چهارشنبه 16 اسفند 1391, 23:01 عصر
سلام
ببین این میتونه کمکت کنه



for (int i = 0; i < dataGridView2.Rows.Count; i++) { SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=ID_Proof;Integrated Security=True"); SqlCommand cmd = new SqlCommand("INSERT INTO Restaurant (Customer_Name,Quantity,Price,Category,Subcategory ,Item,Room_No,Tax,Service_Charge,Service_Tax,Order _Time) values (@customer,@quantity,@price,@category,@subcategory ,@item,@roomno,@tax,@servicecharge,@sertax,@ordert ime)", con); cmd.Parameters.AddWithValue("@customer",dataGridView2.Rows[i].Cells[0].Value); cmd.Parameters.AddWithValue("@quantity",dataGridView2.Rows[i].Cells[1].Value); cmd.Parameters.AddWithValue("@price",dataGridView2.Rows[i].Cells[2].Value); cmd.Parameters.AddWithValue("@category",dataGridView2.Rows[i].Cells[3].Value); cmd.Parameters.AddWithValue("@subcategory",dataGridView2.Rows[i].Cells[4].Value); cmd.Parameters.AddWithValue("@item",dataGridView2.Rows[i].Cells[5].Value); cmd.Parameters.AddWithValue("@roomno",dataGridView2.Rows[i].Cells[6].Value); cmd.Parameters.AddWithValue("@tax",dataGridView2.Rows[i].Cells[7].Value); cmd.Parameters.AddWithValue("@servicecharge",dataGridView2.Rows[i].Cells[8].Value); cmd.Parameters.AddWithValue("@sertax",dataGridView2.Rows[i].Cells[9].Value); cmd.Parameters.AddWithValue("@ordertime",dataGridView2.Rows[i].Cells[10].Value); con.Open(); cmd.ExecuteNonQuery(); con.Close(); MessageBox.Show("Added successfully!");

khokhan
چهارشنبه 16 اسفند 1391, 23:10 عصر
string StrQuery;
try
{
using (SqlConnection conn = new SqlConnection(ConnString))
{
using (SqlCommand comm = new SqlCommand())
{
comm.Connection = conn;
conn.Open();
for(int i=0; i< dataGridView1.Rows.Count;i++)
{
StrQuery= @"INSERT INTO tableName VALUES ("
+ dataGridView1.Rows[i].Cells["ColumnName"].Value +", "
+ dataGridView1.Rows[i].Cells["ColumnName"].Value +");";
comm.CommandText = StrQuery;
comm.ExecuteNonQuery();
}
}
}
}

ali2121
چهارشنبه 16 اسفند 1391, 23:17 عصر
سلام همین کد رو نوشتم با حلقه ؛ ولی جواب نمیده
تنها یک سطر رو ذخیره میکنه

khokhan
چهارشنبه 16 اسفند 1391, 23:47 عصر
سلام

اینو امتحان کن


private void button2_Click(object sender, EventArgs e)

{

SqlConnection con = new System.Data.SqlClient.SqlConnection();

con = new System.Data.SqlClient.SqlConnection();

con.ConnectionString = "Server=excel-pc;Database=Northwind.MDF;Trusted_Connection=True;";

con.Open();

SqlDataAdapter da = new SqlDataAdapter();



for (int i = 0; i <= dataGridView1.Rows.Count - 1; i++)

{



String insertData = "INSERT INTO Import_List(Fname, Lname, Age) VALUES (@Fname, @Lname, @Age)";

SqlCommand cmd = new SqlCommand(insertData, con);

cmd.Parameters.AddWithValue("@Fname", dataGridView1.Rows[i].Cells[0].Value);

cmd.Parameters.AddWithValue("@Lname", dataGridView1.Rows[i].Cells[1].Value);

cmd.Parameters.AddWithValue("@Age", dataGridView1.Rows[i].Cells[2].Value);

da.InsertCommand = cmd;

cmd.ExecuteNonQuery();

}



con.Close();

}

majidrezaei2007
پنج شنبه 17 اسفند 1391, 10:26 صبح
استفاده از دستورات IO مثل کار با بانک اطلاعاتی در داخل حلقه for خیلی می تونه بد باشه
شما باید رشته SQL رو به ازای تمام سطر ها بسازی و فقط با یک دستور IO اونو تو بانک ثبت کنی
مثلا فرض کن که یک تیبل داری که دو تا فیلد داره و می خوای سه سطر توش درج کنی :
INSERT INTO TBLNAME VALUES(1,2),(2,2),(3,3)

mehdi zanjani
پنج شنبه 17 اسفند 1391, 13:04 عصر
خیلی خیلی ساده است فقط کافیه سطر های گرید ویو رو با DataSet و DataTable بریزی تو دیتا تیبل بعد بفرستی به دیتابیس ، خیلی راحته 10 خط کد نمیشه امتحان کن اگه نتونستی بگو کد میذارم.

ordebehesht
پنج شنبه 17 اسفند 1391, 14:27 عصر
خیلی خیلی ساده است فقط کافیه سطر های گرید ویو رو با DataSet و DataTable بریزی تو دیتا تیبل بعد بفرستی به دیتابیس ، خیلی راحته 10 خط کد نمیشه امتحان کن اگه نتونستی بگو کد میذارم.
خوب زحمت بکشین بنویسین تا بقیه هم استفاده کنن

mahdad sepah
پنج شنبه 17 اسفند 1391, 15:17 عصر
foreach (DataGridViewRow row in dataGridView1.Rows)
{
string Name = row.Cells["Name"].Value.ToString();
int GheymateKol = int.Parse(row.Cells["price"].Value.ToString().Replace(",", ""));
int tedad = int.Parse(row.Cells["Tedad"].Value.ToString().Replace(",", ""));
}

برای گریدویو سه تا ستون ساختم و هر کدوم را در یک متغیر ریختم در ادامه هم متغیر ها رو میریزی تو دیتابیس،من با این روش کار کردم و جواب گرقتم
موفق باشی

ali2121
جمعه 18 اسفند 1391, 20:16 عصر
درود
باز هم نشد فقط یک سطر رو ذخیره میکنه

کمک کنید

khokhan
جمعه 18 اسفند 1391, 22:48 عصر
درود بر شما

بیا عزیز جان درست شد :لبخند:

ایزد یارتان باد

ali2121
جمعه 18 اسفند 1391, 23:08 عصر
درود عزیز برنامتون که فرم یک خطا داره ، برنامه اجرا نمیشه ،

اجرا کنید خودتون لطفا

khokhan
جمعه 18 اسفند 1391, 23:39 عصر
سلام

این هم شمای برنامه

حالا نمی دونم چرا مال شما ایراد داده

یه بار ری بلد کن شاید حل بشه

mehdi zanjani
شنبه 19 اسفند 1391, 11:02 صبح
DataTable dt = new DataTable();
dt.TableName = "table";
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
dt.Columns.Add(column.DataPropertyName, column.ValueType);
}
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.IsNewRow)
continue;
DataRow dr = dt.NewRow();
for (int i = 0; i < dataGridView1.Columns.Count; i++)
dr[i] = (row.Cells[i].Value == null ? DBNull.Value : row.Cells[i].Value);
dt.Rows.Add(dr);
}

بعدش هم که میفرستی به دیتابیس دیگه !!!

khokhan
شنبه 19 اسفند 1391, 17:35 عصر
private void button1_Click(object sender, EventArgs e)
{
try
{
using (SqlConnection con = new SqlConnection(connect))
{
using (SqlCommand command = new SqlCommand())
{
command.Connection = con;
command.CommandText = "insert into alma(name, address) values(@name, @address)";

command.Parameters.Add(new SqlParameter("@name", SqlDbType.VarChar));
command.Parameters.Add(new SqlParameter("@address", SqlDbType.VarChar));
con.Open();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (!row.IsNewRow)
{
command.Parameters["@name"].Value = row.Cells[0].Value;
command.Parameters["@address"].Value = row.Cells[1].Value;
command.ExecuteNonQuery();
}
}
}
}
}

catch (Exception x)
{
MessageBox.Show(x.Message);
}
}