现有一表table1,其中一个字段为id,用触发器和sequences使其自增,并设为主键, //数据库数据更新函数
public DataSet UpdateDataBase(string strSQL, DataSet changedDataSet, string tableName)
{
myConnection = new OracleConnection(strConn);
da = new OracleDataAdapter(strSQL, myConnection);
builder = new OracleCommandBuilder(da);
da.Update(changedDataSet, tableName);
return changedDataSet;
//返回更新了的数据库表
} //检索数据库数据函数(传字符串,直接操作数据库),返回填充了数据的dataset
public DataSet SelectDataBase(string tempStrSql)
{
strSQL = tempStrSql;
myConnection = new OracleConnection(strConn);
sda = new OracleDataAdapter(strSQL, myConnection);
OracleCommandBuilder cb = new OracleCommandBuilder(sda); //这句要有
ds.Clear();
sda.Fill(ds);
//返回填充了数据的DataTable
return ds;
}//查询代码
string str="select * from table";
DataSet ds=SelectDataBase(str);
DataGridView1.DataSource=ds.tables[0];//更新代码
UpdateDataBase(str, ds, "table");现在的问题是,DataGridView1并不显示id列,当新增一行时,由于ds中id列为空值,所以更新不到数据库中,请问这种情况该怎么解决或用什么方式更新数据库比较好?
public DataSet UpdateDataBase(string strSQL, DataSet changedDataSet, string tableName)
{
myConnection = new OracleConnection(strConn);
da = new OracleDataAdapter(strSQL, myConnection);
builder = new OracleCommandBuilder(da);
da.Update(changedDataSet, tableName);
return changedDataSet;
//返回更新了的数据库表
} //检索数据库数据函数(传字符串,直接操作数据库),返回填充了数据的dataset
public DataSet SelectDataBase(string tempStrSql)
{
strSQL = tempStrSql;
myConnection = new OracleConnection(strConn);
sda = new OracleDataAdapter(strSQL, myConnection);
OracleCommandBuilder cb = new OracleCommandBuilder(sda); //这句要有
ds.Clear();
sda.Fill(ds);
//返回填充了数据的DataTable
return ds;
}//查询代码
string str="select * from table";
DataSet ds=SelectDataBase(str);
DataGridView1.DataSource=ds.tables[0];//更新代码
UpdateDataBase(str, ds, "table");现在的问题是,DataGridView1并不显示id列,当新增一行时,由于ds中id列为空值,所以更新不到数据库中,请问这种情况该怎么解决或用什么方式更新数据库比较好?
解决方案 »
- 明华IC卡问题
- 如何让网页启动本地程序
- 找不到类型或命名空间名称,是不是版本问题(某些代码限制了)
- 关于。NET项目发布
- 外网的服务器如何访问局域网客户端
- 大文件的上传问题.请高手帮忙。急!!!!
- 如何编写磁盘格式化?
- filesystemwatcher如何监控ftp的断点续传的文件?
- 开发类似Httpwatch的软件,如何获取一次http请求中的各个时长
- 我没倒分!!特来沌清事实,请大家看完我的聊天记录就明白了,来者有分,只想让大家知道事实的真像
- privateFontCollection 和InstalledFontCollection有什么区别啊!!
- 水晶报表Viewer如何自动EXPORT一个DOC文件
也可以利用adapter的rowupdating事件,具体是哪个不记得了。
public void UpdateTable()
{
SqlConnection conn = new SqlConnection(SqlHelper.ConnectionString);
SqlDataAdapter da = new SqlDataAdapter("SELECT id, name FROM tt", conn);
DataSet ds = new DataSet();
da.Fill(ds,"tt"); da.UpdateCommand = new SqlCommand("UPDATE tt SET name= @name WHERE id = @did", conn);
da.UpdateCommand.Parameters.Add("@did", SqlDbType.NVarChar, 8, "id");
da.UpdateCommand.Parameters.Add("@name", SqlDbType.NVarChar, 20, "name");
SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(da);
ds.Tables["tt"].Rows[0]["name"] = "34";
da.Update(ds.Tables["tt"]);
}
public void AddTable()
添加
{
SqlConnection conn = new SqlConnection(SqlHelper.ConnectionString);
SqlDataAdapter da = new SqlDataAdapter("SELECT id, name FROM tt", conn);
DataSet ds = new DataSet();
da.Fill(ds,"tt"); SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(da);
DataRow row = ds.Tables["tt"].NewRow();
row[0] = 3;
row[1] = "ads";
ds.Tables["tt"].Rows.Add(row);
da.Update(ds.Tables["tt"]);//直接Update
}