public DataSet UpInfo(DataSet table,String tableName)
{
String connString = "Data Source=ORAKSJH;user=u_ksjh;password=smksjh";
OracleConnection conn = new OracleConnection(connString);
OracleTransaction trans = null; try
{
OracleCommand cmd = new OracleCommand(" SELECT * FROM CSHAREUSERINFO ",conn);
conn.Open(); trans = conn.BeginTransaction();
//cmd.Transaction = trans; OracleDataAdapter rar = new OracleDataAdapter(cmd);
OracleCommandBuilder cmdBuiler = new OracleCommandBuilder(rar); if (table.HasChanges())
{
rar.Update(table.Tables[tableName]); trans.Commit();
conn.Close();
}
}
catch (Exception e)
{
e.ToString();
trans.Rollback();
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
} return table;
} 我在前台的datagridview中已经取到了改变的数据,可是为什么table.HasChanges()=false呢???
{
String connString = "Data Source=ORAKSJH;user=u_ksjh;password=smksjh";
OracleConnection conn = new OracleConnection(connString);
OracleTransaction trans = null; try
{
OracleCommand cmd = new OracleCommand(" SELECT * FROM CSHAREUSERINFO ",conn);
conn.Open(); trans = conn.BeginTransaction();
//cmd.Transaction = trans; OracleDataAdapter rar = new OracleDataAdapter(cmd);
OracleCommandBuilder cmdBuiler = new OracleCommandBuilder(rar); if (table.HasChanges())
{
rar.Update(table.Tables[tableName]); trans.Commit();
conn.Close();
}
}
catch (Exception e)
{
e.ToString();
trans.Rollback();
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
} return table;
} 我在前台的datagridview中已经取到了改变的数据,可是为什么table.HasChanges()=false呢???
你把绑定到DataGridView的方法及相应数据源的捞取代码拿来看看
还有一个是,你有没有做过AcceptChanges()之类的事情?如果做了,那么DT的状态都变掉了。
{
monthCalendar1.Visible = false;
StringBuilder sb = new StringBuilder();
sb.Append(" SELECT * FROM CSHAREUSERINFO WHERE(1=1) ");
Form1 f = new Form1();
dsAll = f.getCollections(sb.ToString());//查询的方法。
dataGridView1.DataSource = dsAll.Tables[0];
}
table.HasChanges()) 都判断没有修改记录了
如果你确定DataGridView有修改过了(直接在上面修改的吧)那你这个方法中的table应该是DataGridView.DataSource
{
Form1 form1 = new Form1(); //dsAll.AcceptChanges();
DataSet flg = form1.UpInfo(dsAll,"USERS");
dataGridView1.DataSource = flg.Tables[0];
}这个是我取前台datagridview的方法,我的dsAll是全局的
那你把"保存"的按钮事件中的代码拿来看看
{
Form1 form1 = new Form1(); //dsAll.AcceptChanges();
DataSet flg = form1.UpInfo(dsAll,"USERS");
dataGridView1.DataSource = flg.Tables[0];
}
你试试
private void button3_Click(object sender, EventArgs e)
{
Form1 form1 = new Form1(); DataSet _changeDS =dsAll.GetChanges()
form1.UpInfo(dsAll,"USERS");
dsAll.Merge(_changeDS);
dataGridView1.DataSource = dsAll.Tables[USERS];
}
form1.UpInfo(dsAll,"USERS");
改成
form1.UpInfo(dsAll,"CSHAREUSERINFO");
干脆,分开写得了,返回table写一个,更新数据库写一个.
那样就分得清了,去看上贴我最后给你的代码和建议,看看有没有帮助吧。虽然是ACCESS的,但是,只要改数据库语言就行了
oledb..改成Oracle...
干脆,分开写得了,返回table写一个,更新数据库写一个.
那样就分得清了,去看上贴我最后给你的代码和建议,看看有没有帮助吧。虽然是ACCESS的,但是,只要改数据库语言就行了
oledb..改成Oracle...
{
OracleConnection _conn =new OracleConnection(连接字符串);
OracleDataAdapter _ada = new OracleDataAdapter(_str,_conn);
DataSet _returnDS = new DataSet();
_ada.Fill(_returnDS,"CSHAREUSERINFO");
return _returnDS;}private void Form4_Load(object sender, EventArgs e)
{
monthCalendar1.Visible = false;
StringBuilder sb = new StringBuilder();
sb.Append(" SELECT * FROM CSHAREUSERINFO WHERE (1=1) ");
dsAll = _returnDS(sb.ToString());
dataGridView1.DataSource = dsAll.Tables[CSHAREUSERINFO];
}
public DataSet UpInfo(DataSet table)
{
String connString = "Data Source=ORAKSJH;user=u_ksjh;password=smksjh";
OracleConnection conn = new OracleConnection(connString);
OracleTransaction trans = null; try
{
OracleCommand cmd = new OracleCommand(" SELECT * FROM CSHAREUSERINFO ",conn);
conn.Open(); trans = conn.BeginTransaction();
//cmd.Transaction = trans; OracleDataAdapter rar = new OracleDataAdapter(cmd);
OracleCommandBuilder cmdBuiler = new OracleCommandBuilder(rar); if (table.HasChanges())
{
rar.Update(table.Tables[CSHAREUSERINFO]); trans.Commit();
conn.Close();
}
}
catch (Exception e)
{
e.ToString();
trans.Rollback();
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
} return table;
} private void button3_Click(object sender, EventArgs e)
{
dataGridView1.DataSource = UpInfo(dsAll);
}这个是根据你的修改后的,你看看
rar.Update(table.Tables[tableName]);
但是还是不能更新到数据库中。
.update(table.Tables["名字"])
更新的时候怎么取不到table中的值了???
你认为Update(table[taleName])!!!如果tableName!=“CSHAREUSERINFO”,会有用吗?不就是=没用过。
public DataSet UpInfo(DataSet table,String tableName)
{
String connString = "Data Source=ORAKSJH;user=u_ksjh;password=smksjh";
OracleConnection conn = new OracleConnection(connString);
OracleTransaction trans = null; try
{
string CmdText="SELECT * FROM "+tableName;//这样就不会固定成一张表了
OracleCommand cmd = new OracleCommand(CmdText,conn);
conn.Open(); trans = conn.BeginTransaction();
//cmd.Transaction = trans;
OracleDataAdapter rar = new OracleDataAdapter();
rar.SelectCommad=cmd;
OracleCommandBuilder cmdBuiler = new OracleCommandBuilder(rar);
if (table.HasChanges())
{
rar.Update(table.Tables[tableName]);
trans.Commit();
}
conn.Close();
}
catch (Exception e)
{
e.ToString();
trans.Rollback();
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
} return table;
}
public DataSet UpInfo(DataSet table,String tableName)
{
String connString = "Data Source=ORAKSJH;user=u_ksjh;password=smksjh";
OracleConnection conn = new OracleConnection(connString);
OracleTransaction trans = null; try
{
string CmdText="SELECT * FROM "+tableName;//这样就不会固定成一张表了
OracleCommand cmd = new OracleCommand(CmdText,conn);
conn.Open(); trans = conn.BeginTransaction();
//cmd.Transaction = trans;
OracleDataAdapter rar = new OracleDataAdapter();
rar.SelectCommad=cmd;
cmd.Transaction = trans; OracleCommandBuilder cmdBuiler = new OracleCommandBuilder(rar);
if (table.HasChanges())
{
rar.Update(table.Tables[tableName]);
trans.Commit();
}
conn.Close();
}
catch (Exception e)
{
e.ToString();
trans.Rollback();
if (conn.State == ConnectionState.Open)
{
conn.Close();
}
} return table;
}
需要加上这句话!
这里发贴,表示您接受了CSDN社区的 用户行为 准则。
这里发贴,表示您接受了CSDN社区的 用户行为 准则。