第一,确保数据库的表设置了主键;
private void button3_Click(object sender, EventArgs e)
{
DataTable dtTmp = new DBConnection(Application.StartupPath + @"\GTAPbyGAMS3-3(2)\data\InitialData\Tmp\quantity.mdb", null).GetDataTable("select * from [" + "qxs" + "]");
string strBuildPrimeKey = "ALTER TABLE " + "qxs" + " ADD CONSTRAINT yueshu PRIMARY KEY (";
if (dtTmp.Columns.Count <= 2)
{
strBuildPrimeKey = strBuildPrimeKey + "["+dtTmp.Columns[0].ColumnName+"]";//注意level是SQL的关键字
strBuildPrimeKey = strBuildPrimeKey + ")";
}
else
{
for (int i = 0; i < dtTmp.Columns.Count; i++)//如果只有一个字段呢?
{
if (dtTmp.Columns[i].ColumnName.Contains("dim"))
{
strBuildPrimeKey = strBuildPrimeKey + "dim" + (i + 1).ToString() + ",";
}
}
strBuildPrimeKey= strBuildPrimeKey.Remove(strBuildPrimeKey.LastIndexOf(","));
strBuildPrimeKey = strBuildPrimeKey + ")";
}
//将最后的“,”换成一边括号
Console.WriteLine(strBuildPrimeKey);
new DBConnection(Application.StartupPath + @"\GTAPbyGAMS3-3(2)\data\InitialData\Tmp\quantity.mdb", null).UpdateTable(strBuildPrimeKey);
}
第二,datatable也应该设置同样的主键;
第三,必须定义OleDbCommandBuilder,以自动生成update的sql语句
public DataSet GetDataSetandAdapter(string strCommandText)
{
this.oleDbCommand.CommandText = strCommandText;
DataSet ds = new DataSet();
try
{
//this.oleDbConnection.Open();//Fill()方法无需开启连接
//OleDbDataAdapter oleDataAdapter;
oleDataAdapter = new OleDbDataAdapter(this.oleDbCommand);
OleDbCommandBuilder cb = new OleDbCommandBuilder(oleDataAdapter);
oleDataAdapter.Fill(ds);
return ds;
}
catch
{
throw new Exception();
}
finally
{
//this.oleDbConnection.Close();
}
}
第三,