0 امتیاز
سلام دوستان محترم

من در برنامه خودم اطلاعات چندین Textbox رو بوسیله کد نویسی در داخل گرید ویو به طور کاملا دستی و با کد نویسی وارد میکنم .الان میخوام همین اطلاعات که داخل دیتا گرید ویو ریختم رو ذخیره کنم داخل دیتا بیس چه طوری باید این کار رو انجام بدم .؟

در صورت امکان با کد برام توضیح بدین .

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

2 پاسخ

0 امتیاز

سلام 

دوست عزیزدیتابیس دستورات اکسس با sql در دستورات اصلی تفاوتی ندارن یعنی کلا تو درج بایتها و برخی استفاده ها تفاوت جزیی دارن اکسس خیلی عالیه اگه کاربران شبکه بشتر از مثلا 10 نفر شدن و ویرایش و انجام همزمان عملیات بیش از این یا برای پروژه های خیلی بزرگ اون موقع sql کاربردی تره و اکسس تا 2گیگ ساپورت میکنه و تا یک گیگ بدون افت سرعت اطلاعات رو داده کاوی میکنه یک گیگ یعنی 3میلیون ردیف//خوب بهرحال از بحث خارج نشیم 

راههای درج در دیتابیس متفاوته این یه نوعش هست اگه با دستورات و کوئری های اشنا شدید میتونی خودتون یه روش برای درج اطلاعات درست کنی که در کل در نوع و روش شبیه هم هستن

 ابتدا یک کانکشنک استرینگ میسازی

البته این مورد اگه تعداد استفاده تون بشتر باشه بصورت کلاس استفاده کنید بهتره

این

Application.StartupPath محل اجرای عملیات توی دیتابیس هستش میتونه این ادرس سرور یا درایو باشه
string conected = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+Application.StartupPath+@"\DbTax.accdb";

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

 

 private void registerbtn()
        {
            //trim برای جلوگیری از ورود جای خالی هست
            //داخل شرط وضعیت خالی بودن تکست باکس رو بررسی میکنیم

            if (textBox1.Text.Trim()!= string.Empty || textBox2.Text.Trim() != string.Empty)
            {

                OleDbConnection con = new OleDbConnection(conected);//این متد ساخت یه ابجکت از اتصال به دیتابیس هست و داخلش از همون کانکشن استرینگ رو ادرس میدیم
                OleDbCommand cmd = new OleDbCommand("Insert Into tblhash (username,[password])Values(@user,@pass)", con);//اینم دستورات درج هستش
                //اون کلمه پسورد که داخل براکت هستش چون دستورات یا کوئری دیتابیس حساس به فاصله  هست 
                cmd.Parameters.AddWithValue("@user", textBox1.Text);//این خط ها پارامترهای درج از تکست باکس به دیتابیس هستن
                cmd.Parameters.AddWithValue("@pass", textBox2.Text);
                con.Open();//باز کردن دیتابیس
                cmd.ExecuteNonQuery();//اجرای دستورات

                con.Close();//بستن دیتابیس

            }
            else
            {
                MessageBox.Show("فیلدها رو تکمیل کنید");
                return;
            }

        }

 

بعد توی باتن خودت فراخوانیش میکنی

 private void button1_Click(object sender, EventArgs e)
        {
            registerbtn();
        }

 

ضمن تشکر از دوست عزیز برای ارائه جواب

باید به عرض برسانم که انگار شما منظور منو خوب متوجه نشدید بنده عرض کردم من اطلاعات رو از تکست باکس ها در داخل گرید ویو می ریزم بعدش میخوام همان اطلاعات که در داخل دیتا گرید ویو هستش رو داخل بانک اطلاعاتی ذخیر کنم .

وگرنه همون کدی که شما زحمت کشیدن رو دارم .

باتشکر
توسط (126 امتیاز) 4 4 14

شرمنده دقت نکردم

با این روش حلقه تکرار  میتونید سطرهای دیتاگرید رو بگیرید و توی دیتابیس وارد کنید

اینم سورس

http://www.w3-farsi.com/forum/?qa=blob&qa_blobid=588647602708481975


 
ویرایش شده توسط
توسط (7,164 امتیاز) 4 7 141
0 امتیاز
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Data.OleDb;
using System.Text;
using System.Windows.Forms;

namespace test1
{
    public partial class Form1 : Form
    {
        private static string conected = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + System.Windows.Forms.Application.StartupPath + @"\DBtest.accdb";
        OleDbConnection conn = new OleDbConnection();

        OleDbCommand cmd1;
        OleDbConnection con;
        System.Data.DataTable dt = new System.Data.DataTable();
        OleDbDataAdapter adp1;
        DataSet ds;
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            SaveDGV_DB();
        }
        private void FillDataGrid()
        {
            con = new OleDbConnection(conected);
            cmd1 = new OleDbCommand("Select * from tbltest order by ID", con);
            ds = new DataSet();
            adp1 = new OleDbDataAdapter(cmd1);
            adp1.Fill(ds, "tbltest");
            dataGridView1.DataSource = ds;
            dataGridView1.DataMember = "tbltest";

        }
        private void SaveDGV_DB()
        {
            try
            {
                con = new OleDbConnection();
                con.ConnectionString = conected;
                con.Open();

                string connString = "INSERT INTO tbltest(nam,tell,mail) values(@nam,@tell,@mail)";

                for (int row = 0; row < dataGridView1.Rows.Count; row++)
                {
                    OleDbCommand cmd1 = new OleDbCommand(connString, con);
                    cmd1.Parameters.AddWithValue("@nam", dataGridView1.Rows[row].Cells[1].FormattedValue.ToString());
                    cmd1.Parameters.AddWithValue("@tell", dataGridView1.Rows[row].Cells[2].FormattedValue.ToString());
                    cmd1.Parameters.AddWithValue("@mail", dataGridView1.Rows[row].Cells[3].FormattedValue.ToString());
                    cmd1.ExecuteNonQuery();
                    MessageBox.Show("ok");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(" خطا در درج اطلاعات " + ex.Message);
            }
            
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            FillDataGrid();
        }
    }
}

 

سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,920 کاربر

دسته بندی ها

...