using System.Data.OleDb; DataSet ds = new DataSet(); OleDbConnection odconn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=northwind.mdb");
odconn.Open(); //得到数据库中所有的表。
DataTable dt = odconn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
foreach (DataRow item in dt.Rows)
{
string querycmd = "select * from [" + item["TABLE_NAME"].ToString() + "]";
OleDbDataAdapter oleda = new OleDbDataAdapter(querycmd, odconn);
oleda.Fill(ds, item["TABLE_NAME"].ToString());
} MessageBox.Show(ds.Tables.Count.ToString());
//dataGridView1.DataSource = ds.Tables["Categories"]; ds.Tables.Clear();
ds.AcceptChanges(); //我想清除数据库中所有的表,为什么这样不行呢?
MessageBox.Show(ds.Tables.Count.ToString());
问题:想清除数据库MDB中所有的表或者某一指定的表,并将它更新到数据库mdb文件中; 还有一个问题:如何在表中加入/删除一列,并将它更新到数据库mdb文件中。
odconn.Open(); //得到数据库中所有的表。
DataTable dt = odconn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
foreach (DataRow item in dt.Rows)
{
string querycmd = "select * from [" + item["TABLE_NAME"].ToString() + "]";
OleDbDataAdapter oleda = new OleDbDataAdapter(querycmd, odconn);
oleda.Fill(ds, item["TABLE_NAME"].ToString());
} MessageBox.Show(ds.Tables.Count.ToString());
//dataGridView1.DataSource = ds.Tables["Categories"]; ds.Tables.Clear();
ds.AcceptChanges(); //我想清除数据库中所有的表,为什么这样不行呢?
MessageBox.Show(ds.Tables.Count.ToString());
问题:想清除数据库MDB中所有的表或者某一指定的表,并将它更新到数据库mdb文件中; 还有一个问题:如何在表中加入/删除一列,并将它更新到数据库mdb文件中。
{
odconn.Open();
OleDbDataAdapter odda = new OleDbDataAdapter("drop table yourtablename", odconn);}
删除列不清楚……
// 执行SQL命令
public bool ExeSql(string sSQl)
{
try
{
if (_oleConn.State != ConnectionState.Open)
_oleConn.Open();
OleDbCommand cmd = new OleDbCommand(sSQl, _oleConn); cmd.ExecuteNonQuery();
return true;
}
catch (Exception err)
{
throw new Exception("执行SQL命令失败. 失败原因: " + err.Message);
}
}
是删除数据库MDB中的表,而不是DATSET中的表。
在数据库MDB中新建/删除 表;
在数据库MDB中新建/删除 列;
//DROP TABLE "表格名"
OleDbConnection sldb = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=sldb.mdb");
try
{
sldb.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = sldb;
cmd.CommandText = "DROP TABLE Folder";//SQLCOMMAND语句
cmd.ExecuteNonQuery();//执行SQLCMMAD
MessageBox.Show("删除Folder表成功");
}
catch (Exception ex)
{
MessageBox.Show(Convert.ToString(ex.Message));
}
finally { sldb.Close(); sldb = null; } }
我在想,MSDN中为什么没有这样的帮助说明呢?
关于SQL 语句哪里有一个较全明的介绍
谁能给个SQL 语句使用说明的连接。
{
//ALTER TABLE Cars ADD COLUMN Condition TEXT(10)
//在表Cars内增加一个字段,名字为Condition(状况),长度为10
OleDbConnection sldb = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=sldb.mdb");
try
{
sldb.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = sldb;
cmd.CommandText = "ALTER TABLE Folder ADD COLUMN readme TEXT(255)";//SQLCOMMAND语句
cmd.ExecuteNonQuery();//执行SQLCMMAD
MessageBox.Show("Folder表中增加readme字段,文本型长度255");
}
catch (Exception ex)
{
MessageBox.Show(Convert.ToString(ex.Message));
}
finally { sldb.Close(); sldb = null; } }
这本书不错的,基础的sql。当然了,你看这里也可以:
SQL 教程
一个问题: DataSet ds = new DataSet(); OleDbConnection odconn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=northwind.mdb");
odconn.Open(); OleDbCommand oledbcom = new OleDbCommand();
oledbcom.Connection = odconn;
oledbcom.CommandText = "drop table Categories";
ERROR:不能删除该索引或表。它可能是当前索引,或用于一个关系中。
运行到了oledbcom.ExecuteNonQuery();时会出错。
我看了一个帮助文档: ROP 语句从数据库中删除已存在的表,或从表中删除已存在的索引。说明
必须先关闭表,然后才能删除此表或此表中的索引。在这里,我应该怎样处理,谁能说一下。
DataSet ds = new DataSet(); OleDbConnection odconn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=northwind.mdb");
odconn.Open(); OleDbCommand oledbcom = new OleDbCommand();
oledbcom.Connection = odconn;
oledbcom.CommandText = "drop table Categories";
oledbcom.ExecuteNonQuery();//不能删除该索引或表。它可能是当前索引,或用于一个关系中。
关闭掉数据集的约束检查
DataSet.EnforceConstraints=false;