我应将哪种16位数字数据存储到数据库中?

时间:2018-11-10 09:14:49

标签: c# ms-access types

我是C#的新手,如果这是一个简单的问题,对不起。 我有一个通过MS-Access连接到我的数据网格的数据库。我让用户输入信息并将其保存到数据库中。我遇到一个问题,其中“卡号”不能为16位数字,因为它会引发数据类型错误。预先谢谢你!

OleDbCommand updateQuery = new OleDbCommand("INSERT INTO Profiles ([PROFILE NAME],[LOGIN EMAIL],[PASSWORD],[FULL NAME],[CARD NUMBER],[EXP MONTH],[EXP YEAR],CVV) VALUES(@name1,@email,@pass,@name2,@card,@expm,@expy,@cvv)", connection);

updateQuery.Parameters.Add("@name1", OleDbType.Variant).Value = textBox4.Text; //Profile Name
updateQuery.Parameters.Add("@email", OleDbType.Variant).Value = textBox2.Text; //Email
updateQuery.Parameters.Add("@pass", OleDbType.Variant).Value = textBox3.Text;  //Pass
updateQuery.Parameters.Add("@name2", OleDbType.Variant).Value = textBox1.Text; //Full Name
updateQuery.Parameters.Add("@card", OleDbType.VarNumeric).Value = textBox5.Text;  //CardNumber
updateQuery.Parameters.Add("@expm", OleDbType.Numeric).Value = comboBox1.Text; //EXPMonth
updateQuery.Parameters.Add("@expy", OleDbType.Numeric).Value = comboBox2.Text; //EXPYear
updateQuery.Parameters.Add("@cvv", OleDbType.Numeric).Value = textBox7.Text;   //CVV

updateQuery.ExecuteNonQuery();

connection.Close();

MessageBox.Show("Profile Saved");
this.Close();
RefreshDBConnection();

注意:我将代码更改为:

updateQuery.Parameters.Add("@card", OleDbType.VarNumeric).Value = textBox5.Text;  //CardNumber

,现在它会引发溢出错误。不知道发生了什么。

2 个答案:

答案 0 :(得分:2)

使用 BigInt 会造成严重的局限性,如前所述,并且最糟糕的操作是使用 Long Text (“注释”字段)。

因此,请使用短文本十进制设置为至少包含16位数字:

enter image description here

答案 1 :(得分:0)

如果是int,db中的数据类型是什么!将其更改为BigInt,它将起作用:)