public DataSet ds=null;
public OleDbConnection cnn=null;
public OleDbDataAdapter oda=null;
void openlink()
{
cnn=new OleDbConnection();
cnn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Application.StartPath+@"/data.db;jetoledb password='1111'";//一般我们把数据库放bin目录下,然后后缀修改成db,再加个密码
try{cnn.Open()}
cacth{MessageBox.Show("连接数据库失败!")}
}
void linksql(String sql)
{
if (cnn!= null)
{
ds = new DataSet();
oda = new OleDbDataAdapter();
oda.SelectCommand = new SqlCommand(sql, cnn);
OleDbCommandBuilder builder = new OleDbCommandBuilder(oda);
oda.Fill(ds);
}
}
void saveupdate()
{
if (ds != null)
{
oda.Update(ds.Tables[0]);
MessageBox.Show("操作已成功!", "保存数据", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
public void fillGrid(DataSet ds, BindingNavigator b, DataGridView d)
{
BindingSource bs = new BindingSource();
bs.DataSource = ds.Tables[0];
b.BindingSource = bs;
d.DataSource = bs;
}
上面的代码就是,你先openlink()打开链接,再用link(sql)查询数据库,最后fillGrid填充到表格和数据导航,直接在表格里增删查,然后saveupdate就完事。
追问请问这个更新是更新整个数据表吧?
我的想法datagrid界面是readonly的,然后点击一个button,弹出一个框,显示选中的数据,然后修改,保存。 问题是如何判断当前选中的数据,并且传到新form里面呢? 并且如果修改这一条的话,怎么更新呢?
追答肯定是更新整个表啊,dataGridView你修改的时候就要给修改列权限,只读你怎么去修改?判断选中数据,传到新form里面是另一码事,从始至终修改跟传值风马牛不相及。新form如果是新弹出来的,你就在新窗口里封装变量,代码:
//传到新form的textBox1
public String str
{
get{return textBox1.Text;}
set{textBox1.Text=value;}
}
//dataGridView窗体
void Send(DataGridViewRows e)
{
form f=new form();
f.str=dataGridView1.Rows[e.Index].Cells["列名"].Value.ToString();
f.ShowDialog();
}
如果你是已经打开过的窗体,那就直接在窗体里公开变量,直接传值:
//form
public static String str
{
get{return textBox1.Text;}
set{textBox1.Text=value;}
}
//Grid载体窗体
form.str=dataGridView1.Rows[e.Index].Cells["列名"].Value.ToString();
追问想做这种修改:对当前行进行修改,并弹出一个窗口,窗口里面的数据窗口输入记录后,把记录存入到SQL数据库中,关闭窗口后,刷新dataGridView中的内容。是当前行的数据,确定后把修改的数据存入SQL数据库,刷新dataGridView中的内容。