datagridview更新資料庫
1. 怎麼用DataGridView直接更新ACCESS資料庫里的數據
以往的回答都是說在默認值里設置,這種方法在還沒有輸入記錄的時候確實是一個好方法,但是若已經輸入了記錄(特別是已輸入了不少的記錄)的話,此方法就行不通了,在此我有一個方法可供你們參考一下(特別是對輸入了不少的記錄更會覺得方便):1.在「查詢」中設計一個「更新查詢」。在查詢設計器中,把要修改的表顯示出來,在下面的欄位欄中選擇要修改或添加的欄位名。在「更新到」欄中輸入1,並保存查詢。
2. 執行查詢,在資料表中的相應欄位即可得到所需要的值。
此方法即簡便又實用(特別是對已輸入較多的記錄而言),並且執行一次後即可將該查詢刪除。
2. 如何將datagridview中的數據更新到其數據源的資料庫中
這個我做的課程設計有用到,是斷開連接環境到sql數據。
private void 商店一_商品_Load(object sender, EventArgs e)
{
sqlConn = new SqlConnection("Data Source=ASUS-PC\\SQLEXPRESS;Initial Catalog=SUPERMARKET;Integrated Security=True;");
/SqlConnection連接到本地伺服器ASUS-PC,資料庫SUPERMARKET,使用windows身份驗證
sqlDa = new SqlDataAdapter("SELECT * FROM dbo.商店一_商品", sqlConn);
//Sql適配器以從表dbo.商店一_商品選擇所有列作為命令,綁定到SqlConnection
sqlDs = new DataSet();//為數據集分配內存
sqlDa.Fill(sqlDs, "dbo.商店一_商品");//適配器填充到數據集中的表"dbo.商店一_商品"
dataGridView1.DataSource = sqlDs.Tables["dbo.商店一_商品"];
//dataGridView1以數據集中的表"dbo.商店一_商品"作為其數據源
SqlCommandBuilder sqlCmdBuilder = new SqlCommandBuilder(sqlDa);
//然後用SqlCommandBuilder自動為SqlDataAdapter生成Insert、Update、Delete命令
}
點button1批量更新到資料庫:
private void button1_Click_1(object sender, EventArgs e)
{
if (sqlDs.HasChanges())//如果數據集因我們對datagridview的操作發生改變
{
try//捕獲異常
{
sqlDa.Update(sqlDs.Tables["dbo.商店一_商品"]);//以數據集的"dbo.商店一_商品"表更新資料庫
sqlDs.Tables["dbo.商店一_商品"].AcceptChanges();//接受對數據的修改
MessageBox.Show("更新成功!", "操作結果", MessageBoxButtons.OK, MessageBoxIcon.Information);//彈出提示更新成功
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "更新失敗!", MessageBoxButtons.OK, MessageBoxIcon.Error);
//出現異常提示更新失敗
}
}
}
button2刪除當前行:
private void button2_Click_1(object sender, EventArgs e)
{ //刪除首先要定位到當前選中的記錄
int delRowIndex = dataGridView1.CurrentRow.Index;
this.dataGridView1.Rows.RemoveAt(delRowIndex);
//然後調用button1更新資料庫的方法
button1.PerformClick();
}
3. 如何使用DataGridView更新資料庫
用手工輸入代碼
OleDbDataAdapter adapter = new OleDbDataAdapter();
adapter.SelectCommand = new OleDbCommand(queryString, connection);
OleDbCommandBuilder cb = new OleDbCommandBuilder(adapter);
connection.Open();
adapter.Fill(dataSet, tableName);
adapter.Update(dataSet, tableName);//有了OleDbCommandBuilder,此行才有效
connection.Close();
就可以將DataGridView表格上的輸入更新至資料庫。
4. c#:datagridview顯示數據了,怎麼把它的變動更新到資料庫
代碼寫在類裡面,要寫完整了才能靈活應用,你不要每次操作都去打開一次資料庫鏈接,那樣會造成死鎖。
publicDataSetds=null;
publicSqlDataAdaptersda=null;
publicstaticSqlConnectionconn=null;
publicvoidOpenLink()
{
conn=newSqlConnection();
conn.ConnectionString="Server=192.168.1.2;UID=sa;PWD=**112*;DataBase=454545";
try
{
conn.Open();
}
catch
{
MessageBox.Show("連接資料庫失敗!");
}
}
publicvoidsaveTable()
{
if(ds!=null)
{
sda.Update(ds.Tables[0]);
MessageBox.Show("操作已成功!","保存數據",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
publicvoidlink(Stringsql)
{
if(conn!=null)
{
ds=newDataSet();
sda=newSqlDataAdapter();
sda.SelectCommand=newSqlCommand(sql,conn);
SqlCommandBuilderbuilder=newSqlCommandBuilder(sda);
sda.Fill(ds);
}
}
publicvoidfilldata(DataSetds,BindingNavigatorb,DataGridViewd)
{
BindingSourcebs=newBindingSource();
bs.DataSource=ds.Tables[0];
b.BindingSource=bs;
d.DataSource=bs;
}
在你整個項目啟動的時候初始化數據就OpenLink(),filldata就是填充dataGridView綁定導航,link()直接填寫SQL語句就好了,在link的基礎上saveTable()
5. 如何使用datagridview修改資料庫
實現思路:
實現資料庫和datagridview數據連接
實現修改datagridview觸發事件,獲取更新數據存放在變數里
通過變數的變化實現資料庫更新功能。
功能代碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using System.Data.SqlClient;
namespace Quanxian
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private int job_id;
private string job_desc;
private int min_lvl;
private int max_lvl;
private void Form2_Load(object sender, EventArgs e)
{
binddatagridview();
}
/// <summary>
/// 綁定Datagridview的方法
/// </summary>
private void binddatagridview()
{
SqlConnection sqlcon = new SqlConnection("server=.;uid=sa;pwd=;database=pubs");
SqlDataAdapter sqldap = new SqlDataAdapter("select * from jobs", sqlcon);
DataSet ds = new DataSet();
sqldap.Fill(ds);
this.dataGridView1.DataSource = ds.Tables[0];
}
/// <summary>
/// 編輯單元格後觸發
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (dataGridView1.Rows.Count > 0)
{
job_id = int.Parse (this.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());
job_desc = this.dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
min_lvl = int.Parse(this.dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString());
max_lvl = int.Parse(this.dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString());
}
}
/// <summary>
/// 修改
/// </summary>
private void button1_Click(object sender, EventArgs e)
{
SqlConnection sqlcon = new SqlConnection("server=.;uid=sa;pwd=;database=pubs");
string str = "update jobs set job_desc='" + job_desc + "',min_lvl=" + min_lvl + ",max_lvl=" + max_lvl + " where job_id=" + job_id + "";
SqlCommand sqlcom = new SqlCommand(str,sqlcon);
try
{
sqlcon.Open();
if (sqlcom.ExecuteNonQuery() > 0)
MessageBox.Show("保存成功");
else
MessageBox.Show("保存失敗!");
}
catch
{
//異常
}
finally
{ sqlcon.Close();}
}
/// <summary>
/// 刷新
/// </summary>
private void button2_Click(object sender, EventArgs e)
{
binddatagridview();
}
}
}