Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用.NET操作Access数据库中的表_.net_Ms Access_Ado.net_Datatable - Fatal编程技术网

如何使用.NET操作Access数据库中的表

如何使用.NET操作Access数据库中的表,.net,ms-access,ado.net,datatable,.net,Ms Access,Ado.net,Datatable,我在access数据库中有一个名为“Streets”的表,我已经打开了与的连接 OleDbConnection con = OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data source=" + mdbFileName); 如何进入我的表格?将ADOX COM引用添加到您的项目中,并尝试以下代码: using ADOX; //... private void Test() { string connString

我在access数据库中有一个名为“Streets”的表,我已经打开了与的连接

OleDbConnection con = OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data source=" + mdbFileName);

如何进入我的表格?

将ADOX COM引用添加到您的项目中,并尝试以下代码:

using ADOX;

//...
private void Test() {
    string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<path to your .mdb>";
    CatalogClass cat = new CatalogClass();
    cat.let_ActiveConnection(connString);

    RenameField(cat, "YourTableName", "OriginalFieldName", "NewFieldName");
    AddField(cat, "YourTableName", "YourNewFieldName", DataTypeEnum.adVarWChar, 50, "");
}

// Rename a field.
private void RenameField(CatalogClass cat, string tableName, string originalFieldName, string newFieldName) {
    cat.Tables[tableName].Columns[originalFieldName].Name = newFieldName;
}

// Add a field to a specified table.
private void AddField(ADOX.CatalogClass cat, string tableName, string newFieldName, DataTypeEnum varType, int size, string defaultValue) {
    ColumnClass col = new ColumnClass();
    col.Name = newFieldName;
    col.Type = varType;
    col.DefinedSize = size;
    col.Attributes = ColumnAttributesEnum.adColNullable;
    cat.Tables[tableName].Columns.Append((object)col, DataTypeEnum.adInteger, 0);

    if (!string.IsNullOrEmpty(defaultValue)) {
        col.Properties["Default"].Value = defaultValue;
    }

}
使用ADOX;
//...
专用无效测试(){
string connString=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=”;
CatalogClass cat=新CatalogClass();
cat.let_活动连接(连接字符串);
重命名字段(cat,“YourTableName”、“OriginalFieldName”、“NewFieldName”);
AddField(cat,“YourTableName”,“YourNewFieldName”,DataTypeEnum.adVarWChar,50,”;
}
//重命名字段。
私有void重命名字段(CatalogClass cat、string tableName、string originalFieldName、string newFieldName){
cat.Tables[tableName].Columns[originalFieldName].Name=newFieldName;
}
//将字段添加到指定的表中。
私有void AddField(ADOX.CatalogClass cat、string tableName、string newFieldName、DataTypeEnum varType、int size、string defaultValue){
ColumnClass col=新ColumnClass();
col.Name=newFieldName;
col.Type=varType;
col.DefinedSize=尺寸;
col.Attributes=ColumnAttributesEnum.adColNullable;
cat.Tables[tableName].Columns.Append((对象)列,DataTypeEnum.adInteger,0);
如果(!string.IsNullOrEmpty(defaultValue)){
列属性[“默认”]。值=默认值;
}
}
详细信息可在以下博客帖子中找到:



使用标准ADO.net将数据添加到新字段。

您需要“更改”表并使用ExecuteOnQuery。代码如下:

Dim dbName As String = "<path>\mdbFileName.mdb"
Dim tmpConString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbName & ";Persist Security Info=False"

Dim sqlText As String = ""
Using cn As New OleDbConnection(tmpConString)
  cn.Open()
  sqlText = "ALTER TABLE Table1 ADD COLUMN fldNew TEXT(50)"

  Using cm As New OleDbCommand(sqlText, cn)
    cm.ExecuteNonQuery()
  End Using
End Using
Dim dbName As String=“\mdbFileName.mdb”
Dim tmpConString As String=“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=“&dbName&”Persist Security Info=False”
Dim sqlText As String=“”
将cn用作新的OLEDB连接(tmpConString)
cn.Open()
sqlText=“ALTER TABLE Table1添加列fldNew TEXT(50)”
使用cm作为新的OleDbCommand(sqlText,cn)
cm.ExecuteNonQuery()
终端使用
终端使用

这将向数据库中添加一个名为“fldNew”的新列。然后,您可以使用标准的UPDATE SQL命令将数据添加到新列中。

您想对表执行什么操作?@Jay Riggs,我想更改一些列名,我想添加一列,并用单个值填充该列的每一行。是否要使用DataTable?我收到此错误,互操作类型Adox.CatalogClass无法嵌入。改用适用的接口。@iterationx-WOMM(在我的机器上工作!)。我怀疑您正在使用VS2010-我正在使用VS2008。我在谷歌上搜索发现,导致错误的一般原因是VS2010/.NET4如何进行互操作。如果您的目标是项目将编译的早期版本的Fx,那么这是可能的。如果你想修复它,你应该谷歌“不能被嵌入。改用适用的接口。”下面是一个描述问题和解决方案的例子,但我不知道它是否会帮助你。我想为了避免错误,只需使用Catalog而不是CatalogClass