我想知道c#中ms-access数据库表列的确切数据类型(dbtype)
本文关键字:数据类型 dbtype 想知道 ms-access 数据库 | 更新日期: 2023-09-27 18:26:35
需要使用c#知道数据库和包含表的确切信息。数据库是MS访问。我想完整的表的信息,如主键,最大长度,而不是空的列在MS访问数据库中的表,等等。。那么最好的方法是什么…
先进的thanx为任何形式的帮助。
另一个问题是getschema以数字方式为我提供数据类型,如130131。。那么我如何在创建表查询中使用它们呢?它们给出错误
让我解释一下我想做什么。我想重新创建一个我没有任何信息的数据库。我不知道它的大小、表、数据或任何东西。事实上,我已经在一定程度上成功了。我所做的是,我得到数据库名称,并用CatalogClass和getschema(tables)创建它。我得到所有的表名称,并使用C#中的create table创建它们。然后用alter table创建列名。现在我必须给它提供数据库中的约束。那么,除了我使用的这种方法之外,还有其他我遗漏的东西吗?有什么简单或更好的方法可以做到这一点。所以,它可以更快地进行
问题仍然悬而未决
我相信所有的东西都在下面的链接中记录了下来,试着通过调试一步一步地运行它,然后你可以检查元素并显示你想要的每个值。
http://msdn.microsoft.com/en-us/library/system.data.datatable.aspx
主键:DataTable.PrimaryKey最大长度,什么?记录?DataTable.Rows.Count列?DataTable.Columns.Rows
您似乎正在使用模式来返回字段类型。我一直在测试,这些行上的某些内容似乎返回了您想要的内容。
ADODB.Connection cn = new ADODB.Connection();
ADODB.Recordset rs = new ADODB.Recordset();
string cnStr;
cnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Z:''Docs''Test.accdb";
string ssql = "Select * From Table1 where 1=2";
cn.Open(cnStr, null, null, 0);
rs.Open(ssql, cn, ADODB.CursorTypeEnum.adOpenKeyset,
ADODB.LockTypeEnum.adLockOptimistic, -1);
foreach (ADODB.Field fld in rs.Fields)
{
Console.WriteLine(fld.Type);
}
Console.Read();
rs.Close();
cn.Close();
对于各种类型,返回
adInteger
adVarWChar = Text
adDate
adInteger
adLongVarWChar = Memo
adVarWChar
adDate
adBoolean