
我之前上网查阅了相关的信息,发现这方面的文章不是太多,虽然不长用,但是有时真要用时使人抓
我说下我的思路
首先我们需要数据库的架构信息,获得表名(其实我个人认为可以获得数据库各表的PrimaryKey已经足够了,因为Net的GuidNewGuid()方法做主键实在是太好了),然后根据表名循环查询除系统表之外的所有表来获取相关信息很遗憾,我原先一直打算只用ADONET就完成所有的事情,但是寻找了好久都没有发现相关的方法,当然这和个人的水平有着重要的因素,不罗嗦了下面是代码
public void ACCESS_MSG(string DataPath)
{
try
{
SystemDataDataTable dt = new SystemDataDataTable();
SystemDataOleDbOleDbConnection conn = new SystemDataOleDbOleDbConnection();
DataOptData opt = new DataOptData();
conn = optOLEDBCONN(DataPath);//这里是我自己写的连接类
dt=connGetOleDbSchemaTable(SystemDataOleDbOleDbSchemaGuidPrimary_Keys, null);//这里获取数据的架构信息
Get_TableName(dt,DataPath);
connClose();
}
catch (SystemException ex)
{
ConsoleWrite(exMessageToString());
}
}
protected void Get_TableName(SystemDataDataTable TableMsg, string DataPath)
{
int i = 0;
string TableName = "", ParmetersList="",PrimaryKeys="";
for (i = 0; i < TableMsgRowsCount; i++)
{
if (TableMsgRows[i]["Table_Name"]ToString()Contains("MSys") != true)
{
TableName = TableMsgRows[i]["Table_Name"]ToString()ToUpper();
ConsoleWriteLine(TableName);
PrimaryKeys = TableMsgRows[i]["COLUMN_NAME"]ToString();
ParmetersList = Get_ParmeterList(TableName, DataPath);
DataOpt_Table(TableName, DataPath, ParmetersList, PrimaryKeys);
}
}
}
以上代码已经获取了除系统表外所有用户表的名,下面开始获取自动编号列,我使用了ADO,非ADONET
protected void Get_AutoID(string TableName)
{
ADODBRecordset rs = new ADODBRecordset();
string conn = "你的数据库连接";
int i = 0;
rsOpen("select from " + TableName, conn, ADODBCursorTypeEnumadOpenDynamic, ADODBLockTypeEnumadLockOptimistic, -1);
for (i = 0; i < rsFieldsCount; i++)
{
if (rsFields[i]Properties[2]Value = true)//这里的特性集合中有5个值,第一个是表名(没记错就是),第二个是字段名,第三个就是是否为自动增长类型了,第四个好象是判断数据库是否区分大小写,第五个一直没搞清楚
{
//这个列是自动编号列
}
}
}
Access数据库为字段提供10种数据类型,比较容易了解,和Excel中很多数据类型类似。后面具体说一下自动编号型:
1.文本型(Text):用于输入文本或文本与数字相结合的数据,是最常用的字段类型之一,又分为短文本和长文本两种,区别就是短文本的字符长度不超过255个字符(字节)。在Access中,每一个汉字和所有特殊字符(包括中文标点符号)都算作一个字符。
2.货币型(Currency):用来存储货币值,即与货币相关的数据,占8个字节,在计算中禁止四舍五入。
要求不严格时,可以使用数字型字段。
3.数字型(Number):用于存储数值数据,可以进行数值计算的数据,但货币除外。
数字型字段按字段大小可以分为字节、整型、长整型、单精度型、双精度型、同步复制ID和小数7种情形,分别占1、2、4、4、8、16和12个字节。最常用的是长整型和双精度型。
4.日期/时间型(Date/Time):用于存储日期和(或)时间值,占8个字节。
5、自动编号型(AutoNumber):如果在表中设计了自动编号字段,当表中新增一个记录之后,系统字段为其添加一个顺序编号,通过自动编号可以保证数据记录的唯一性。默认是长整型,自动编号不能更新。
6、是/否型(Yes/No):又称为布尔型类型,用于存储逻辑值(是/否、真/假、开/关),占1个字节。
7、OLE对象型(OLE Object):用于使用OLE协议在其它程序中创建的OLE对象(如Word文档、Excel电子表格、、声音等),最多存储1GB(受磁盘空间限制)。
8、附件:附件类型是存储数字图像等二进制文件的首选数据类型。
9、超链接型(Hyper Link):用于存放通过超链接方式链接的Windows对象,如通过超链接跳转至文档、网页等。
10、查阅向导型(Lockup Wizard):使用查询向导可以构建一个组合框来输入字段值,这个字段值可以是表、查询中的引用,也可以手动输入的值。
扩展资料:
对于自动编号型,在快捷建表时,会默认有自动编号字段“ID”,它的用途主要是表中如果没有合适的字段作为主键时,它可以充当主键。
使用自动编号型字段时,每增加一条记录时,系统自动增加一个顺序编号,即使删除也不会更新,从而保证数据记录的唯一性。所以可以充当主键。
单纯的用ACCESS自动编号 *** 作是不可能达到你要的效果的,我这里有些代码:
实现对字符型编号自动加1。
AutoNum('SZ001')
显示为:SZ002
AutoNum('001')
显示为:002
AutoNum函数的定义如下:
Function AutoNum(strNum As String) As String
AutoNum = StrReverse(Val(StrReverse(strNum & "1")))
AutoNum = Left(AutoNum, Len(AutoNum) - 1)
AutoNum = Left(strNum, Len(strNum) - Len(AutoNum)) & Format((AutoNum + 1), String(Len(AutoNum), "0"))
End Function
相关函数的解释:
StrReverse:字符串取反
Val:字符串转数值,取字符串左边数字,包括空格
Left:取字符串左边指定个数的子字符串,对应的还有Right,Mid
Len:返回字符串长度
Format:格式化字符串,这里是返回带前导0的数值
String:返回重复指定个数的字符的字符串,类似的有Space函数
以上就是关于在C#中怎么获取数据库的自动编号字段全部的内容,包括:在C#中怎么获取数据库的自动编号字段、自动编号的类型有哪些、ACCSE 数据库里面自动编号问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)