===================================
从逻辑出发 数据库需要的三个基本操作
插入 删除 更新 下面就最基本的概念进行描述
===================================
插入
public int doInsertion(String myTableName,Hashtable paraTable,String tableID)
{
{
String strConnection = System.Configuration.ConfigurationManager.AppSettings"SQLConnectionString"];
dbConnection = new SqlConnection(strConnection);
dataSet = new DataSet();
dbConnection.Open();
String sql = "SELECT * FROM " + myTableName.ToString() + " WHERE " + tableID.ToString()+"= (SELECT MIN(" + tableID.ToString() + ") FROM " + myTableName.ToString() + ")";
dbConnection = new SqlConnection(strConnection);
dataSet = new DataSet();
dbConnection.Open();
String sql = "SELECT * FROM " + myTableName.ToString() + " WHERE " + tableID.ToString()+"= (SELECT MIN(" + tableID.ToString() + ") FROM " + myTableName.ToString() + ")";
// 目前看来未必需要这个sql,但是空着似乎不行 因此就选择最小ID的schema做一个select
dbAdapter = new SqlDataAdapter(sql, dbConnection);
dbAdapter.Fill(dataSet,myTableName.ToString());
dbAdapter = new SqlDataAdapter(sql, dbConnection);
dbAdapter.Fill(dataSet,myTableName.ToString());
//dataAdapter.Fill 不仅仅是填充数据 而且是填充schema 但是据说只有Fillschema才能把constrains也加入 目前还没有试过
dbConnection.Close();
DataTable myDataTable = dataSet.Tables[myTableName.ToString()];
DataTable myDataTable = dataSet.Tables[myTableName.ToString()];
DataRow myDataRow;
myDataRow = myDataTable.NewRow();
myDataRow = myDataTable.NewRow();
//将哈西表中的对应对一一填入schema中相应的项
DataColumnCollection myDCC = myDataTable.Columns;
for (int i = 0; i < paraTable.Count; i++)
{
myDataRow[i] = paraTable[myDCC[i].ColumnName.ToString()];
}
myDataTable.Rows.Add(myDataRow);
for (int i = 0; i < paraTable.Count; i++)
{
myDataRow[i] = paraTable[myDCC[i].ColumnName.ToString()];
}
myDataTable.Rows.Add(myDataRow);
//Add方法只适合添加一条记录
int result = dbAdapter.Update(dataSet, myTableName.ToString());
return result;
}
值得一提的是 虽然涉及到dataRow的schema但是没有任何关于到DataColumn的操作 因此想象中的 按dataColumn对应每个属性 完全没有必要 实际上DataColumn是对dataSet的某一个属性 所有row的一个集合 因此 从DataTable.Columns[0]提出的Column的一个实例 myColumn[5] 应该是第5行的针对这个属性的值