首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#向ACCESS中插入数据的自增列有关问题

2013-01-23 
C#向ACCESS中插入数据的自增列问题我的Access数据库的L_Logins表中有4个字段 ID为自增列 另外三个字段为 U

C#向ACCESS中插入数据的自增列问题
我的Access数据库的L_Logins表中有4个字段 ID为自增列 另外三个字段为 UserName,PassWord,Email
C#向ACCESS中插入数据的自增列有关问题
我用C#向该表插入数据的时候遇到问题。
1 如果我的Sql 语句不包含ID,则会抛出异常,说我的Sql中的字段和表字段不一致。插入失败。
代码如下:

string cmdString = @"INSERT INTO T_Logins VALUES(@UserName,@PassWord,@Email)";
            OleDbParameter[] oleParameters = new OleDbParameter[] 
            {
                //new OleDbParameter("@ID",1),
                new OleDbParameter("@UserName",loginsModel.UserName),
                new OleDbParameter("@PassWord",loginsModel.PassWord),
                new OleDbParameter("@Email",loginsModel.Email)
            };

2 如果我在Sql语句中增加ID这个字段 则又不抛异常说我没有为ID指定默认值。插入失败。
代码如下:
string cmdString = @"INSERT INTO T_Logins VALUES(@ID,@UserName,@PassWord,@Email)";
            OleDbParameter[] oleParameters = new OleDbParameter[] 
            {
                new OleDbParameter("@ID",OleDbType.BigInt),
                new OleDbParameter("@UserName",loginsModel.UserName),
                new OleDbParameter("@PassWord",loginsModel.PassWord),
                new OleDbParameter("@Email",loginsModel.Email)
            };


3 既然说没有指定默认值,那我就给ID指定默认值为1。第一条数据可以插入,第二条数据肯定又报错了,因为主键重复。插入失败。
string cmdString = @"INSERT INTO T_Logins VALUES(@ID,@UserName,@PassWord,@Email)";
            OleDbParameter[] oleParameters = new OleDbParameter[] 
            {
                new OleDbParameter("@ID",1),
                new OleDbParameter("@UserName",loginsModel.UserName),
                new OleDbParameter("@PassWord",loginsModel.PassWord),
                new OleDbParameter("@Email",loginsModel.Email)
            };
        
            return (int)AccessHelper.ExecuteNonQuery(cmdString, oleParameters);


4 既然这样所有情况都试验了,那我就再改一下Sql语句把要的字段加上吧。同样是异常,说INSERT INTO 语句有错。
于是有如下代码: 
string cmdString = @"INSERT INTO T_Logins(UserName,PassWord,Email) VALUES(@UserName,@PassWord,@Email)"; 


            OleDbParameter[] oleParameters = new OleDbParameter[] 
            {
                new OleDbParameter("@UserName",loginsModel.UserName),
                new OleDbParameter("@PassWord",loginsModel.PassWord),
                new OleDbParameter("@Email",loginsModel.Email)
            };
        
            return (int)AccessHelper.ExecuteNonQuery(cmdString, oleParameters);



我都要 崩溃了。。。求大家帮忙。
[解决办法]
第一个,inert字段必须匹配
第二个,你是有id参数,但是没有给id赋值,你好好看看,你只是说明了id的类型
第三个,id是主键吧,你每次都赋值为1,不允许重复
第四个,
string cmdString = @"INSERT INTO T_Logins([UserName],[PassWord],[Email]) VALUES(@UserName,@PassWord,@Email)";
[解决办法]
INSERT INTO T_Logins([UserName],[PassWord],[Email]) VALUES(?,?,?)
[解决办法]
好吧,学习了

热点排行