关于数据库的一个奇怪的问题,请帮帮忙。(在线等) ( 积分: 100 )

  • 主题发起人 主题发起人 yemingyu
  • 开始时间 开始时间
Y

yemingyu

Unregistered / Unconfirmed
GUEST, unregistred user!
public static int Add(HardWare hd)
{
OleDbConnection connection = new OleDbConnection();
connection.ConnectionString = _connstr;

//cmd.Connection =connection;

string cmdText = "Insert into Hard (Name,TypeName,Price,CurPosition,Sailer,UserName,Driver,Description,BM,IP,MAC) VALUES(@Name,@TypeName,@Price,@CurPosition,@Sailer,@UserName,@Driver,@Description,@BM,@IP,@MAC)";
//cmd.CommandText = cmdText;
OleDbCommand command = new OleDbCommand(cmdText,connection);
command.Parameters.Add(new OleDbParameter("@Name",OleDbType.Char ,30));
command.Parameters["@Name"].Value = hd.Name;
command.Parameters.Add( new OleDbParameter("@TypeName",OleDbType.Char,20));
command.Parameters["@TypeName"].Value= hd.TypeName;
command.Parameters.Add( new OleDbParameter("@Price",OleDbType.Integer,4));
command.Parameters["@Price"].Value=hd.Price;
command.Parameters.Add( new OleDbParameter("@BM",OleDbType.Integer,4));
command.Parameters["@BM"].Value = hd.DW;
command.Parameters.Add( new OleDbParameter("@CurPosition",OleDbType.Char,50));
command.Parameters["@CurPosition"].Value =hd.CurPosition;
command.Parameters.Add( new OleDbParameter("@Sailer",OleDbType.Char,50));
command.Parameters["@Sailer"].Value = hd.Sailer;
command.Parameters.Add( new OleDbParameter("@UserName",OleDbType.Char,20));
command.Parameters["@UserName"].Value = hd.UserName;
command.Parameters.Add( new OleDbParameter("@Driver",OleDbType.Char,200));
command.Parameters["@Driver"].Value =hd.Driver;
command.Parameters.Add( new OleDbParameter("@Description",OleDbType.Char,200));
command.Parameters["@Description"].Value = hd.Description;
command.Parameters.Add( new OleDbParameter("@IP",OleDbType.Char,15));
command.Parameters["@IP"].Value = hd.IP ;
command.Parameters.Add( new OleDbParameter("@MAC",OleDbType.Char,20));
command.Parameters["@MAC"].Value = hd.MAC ;

connection.Open();
int i = command.ExecuteNonQuery();
}
其中,HardWare是我自己写的一个类,问题不在这里。通过调试,我看到传进来的参数都是对的,后台数据库是ACCESS,可是一写到数据库中,却全乱了。除了Name,IP,MAC三个参数的值是正确的外,其他的几个全不是自己应该有的值,互相交叉了,意思是原本是A的变成了B,原本是B的值却是C。这是为什么?请指教,在线等。[:(!]
 
public static int Add(HardWare hd)
{
OleDbConnection connection = new OleDbConnection();
connection.ConnectionString = _connstr;

//cmd.Connection =connection;

string cmdText = "Insert into Hard (Name,TypeName,Price,CurPosition,Sailer,UserName,Driver,Description,BM,IP,MAC) VALUES(@Name,@TypeName,@Price,@CurPosition,@Sailer,@UserName,@Driver,@Description,@BM,@IP,@MAC)";
//cmd.CommandText = cmdText;
OleDbCommand command = new OleDbCommand(cmdText,connection);
command.Parameters.Add(new OleDbParameter("@Name",OleDbType.Char ,30));
command.Parameters["@Name"].Value = hd.Name;
command.Parameters.Add( new OleDbParameter("@TypeName",OleDbType.Char,20));
command.Parameters["@TypeName"].Value= hd.TypeName;
command.Parameters.Add( new OleDbParameter("@Price",OleDbType.Integer,4));
command.Parameters["@Price"].Value=hd.Price;
command.Parameters.Add( new OleDbParameter("@BM",OleDbType.Integer,4));
command.Parameters["@BM"].Value = hd.DW;
command.Parameters.Add( new OleDbParameter("@CurPosition",OleDbType.Char,50));
command.Parameters["@CurPosition"].Value =hd.CurPosition;
command.Parameters.Add( new OleDbParameter("@Sailer",OleDbType.Char,50));
command.Parameters["@Sailer"].Value = hd.Sailer;
command.Parameters.Add( new OleDbParameter("@UserName",OleDbType.Char,20));
command.Parameters["@UserName"].Value = hd.UserName;
command.Parameters.Add( new OleDbParameter("@Driver",OleDbType.Char,200));
command.Parameters["@Driver"].Value =hd.Driver;
command.Parameters.Add( new OleDbParameter("@Description",OleDbType.Char,200));
command.Parameters["@Description"].Value = hd.Description;
command.Parameters.Add( new OleDbParameter("@IP",OleDbType.Char,15));
command.Parameters["@IP"].Value = hd.IP ;
command.Parameters.Add( new OleDbParameter("@MAC",OleDbType.Char,20));
command.Parameters["@MAC"].Value = hd.MAC ;

connection.Open();
int i = command.ExecuteNonQuery();
}
其中,HardWare是我自己写的一个类,问题不在这里。通过调试,我看到传进来的参数都是对的,后台数据库是ACCESS,可是一写到数据库中,却全乱了。除了Name,IP,MAC三个参数的值是正确的外,其他的几个全不是自己应该有的值,互相交叉了,意思是原本是A的变成了B,原本是B的值却是C。这是为什么?请指教,在线等。[:(!]
 
为什么没有人回答我?救命呀,我已经折腾了一天了,就是不知道哪里出了问题。
 
实在没看出有什么问题,实在不行就直接拼Sql试试。
虽然这样做不太好,但是参数本身也没有为我们做太多的事情,先试试吧~~[:D]
 
vmao,直接拼SQL,我也试了,还是这个毛病。里面有5个字段的值乱了。郁闷,实在不知道是为什么?
 
我已经知道原因了,谢谢各位关注。
原因是:添加BM参数的位置和INSERT语句中的位置不符,没有想到竟然会这样,以后大家都要注意了。
 
如果大家有更好的解决办法,请留言。有分的。
 
呵呵,这么多参数要细心点的。 :)
 
谢谢参与!
 
后退
顶部