/// <summary>
/// 通用DataAdapter,表要求有【主键】且查询为单表简单查询
/// </summary>
/// <param name="tableName">表名</param>
public static OleDbDataAdapter SmartDataAdapter(string tableName)
{
OleDbDataAdapter adapter = new OleDbDataAdapter(string.Format("select * from {0}", tableName), connectionString);
//为adapter构造默认的 InsertCommand,DeleteCommand,UpdateCommand 需要主键支持
OleDbCommandBuilder cmdbuilder = new OleDbCommandBuilder(adapter);
return adapter;
}
datatable删除的时候不能用DataTable.Rows.RemoveAt();
要用DataTable.Rows[i].Delete();
否则无法删除数据库数据(不会报错)
----------------------------示例---------------------
protected static SqlDataAdapter adapterTBBMGL()
{
StringBuilder sqlInsert = new StringBuilder();
sqlInsert.Append("insert into TBBMGL(");
sqlInsert.Append("TBWBH,TBZDM,BZ)");
sqlInsert.Append(" values (");
sqlInsert.Append("@TBWBH,@TBZDM,@BZ)");
StringBuilder sqlUpdate = new StringBuilder();
sqlUpdate.Append("update TBBMGL set ");
sqlUpdate.Append("TBZDM=@TBZDM,");
sqlUpdate.Append("BZ =@BZ" );
sqlUpdate.Append(" where TBWBH=@TBWBH ");
SqlDataAdapter da = new SqlDataAdapter();
//新增命令InsertCommand参数
da.InsertCommand = new SqlCommand(sqlInsert.ToString(), sqlConnect);
da.InsertCommand.Parameters.Add("@TBWBH", SqlDbType.TinyInt,1 ,"TBWBH");//最后一个参数为对应datatable列的列名
da.InsertCommand.Parameters.Add("@TBZDM", SqlDbType.VarChar,50,"TBZDM");
da.InsertCommand.Parameters.Add("@BZ" , SqlDbType.VarChar,60,"BZ" );
//修改命令UpdateCommand参数
da.UpdateCommand = new SqlCommand(sqlUpdate.ToString(), sqlConnect);
//删除命令DeleteCommand参数
da.DeleteCommand = new SqlCommand("delete TBBMGL where TBWBH=@TBWBH ", sqlConnect);
da.DeleteCommand.Parameters.Add("@TBWBH", SqlDbType.TinyInt, 1,"TBWBH");
return da;
}