我卡在这种情况下无法插入表tbl_customer给出错误:
将表达式转换为数据类型int的算术溢出错误 声明已经终止。
这是我的表结构:
create table tbl_customer(
id int identity primary key,
cust_name varchar(50) NOT NULL,
filecode varchar(20) NOT NULL,
cust_mobile int,
cust_cnic varchar(50) NOT NULL,
cust_phone int,
cust_address varchar(200)
)
这是我用来插入的代码:
insert into tbl_customer values('Jonah Gordian','LHR001',03451119182,'11-22112-122',1212121212,'abc street 12')
我在c#中使用此代码尝试插入:
connclass.insert("insert into tbl_customer(cust_name,filecode,cust_mobile,cust_cnic,cust_phone,cust_address) VALUES('" + txtname.Text + "','" + txtfilecode.Text + "','" + int.Parse(txtmob.Text) + "','" + txtcnic.Text + "','" + int.Parse(txtphone.Text) + "','" + txtaddress.Text + "')");
答案 0 :(得分:2)
试试这个,
CREATE TABLE tbl_customer (
id INT identity PRIMARY KEY
,cust_name VARCHAR(50) NOT NULL
,filecode VARCHAR(20) NOT NULL
,cust_mobile BIGINT --or Varchar(20)
,cust_cnic VARCHAR(50) NOT NULL
,cust_phone INT
,cust_address VARCHAR(200)
)
INSERT INTO tbl_customer
VALUES (
'Jonah Gordian'
,'LHR001'
,03451119182
,'11-22112-122'
,1212121212
,'abc street 12'
)
您已超出int数据类型限制。将数据类型从int更改为bigint或Varchar以解决此问题。
注意:如果你需要前导零,那么你可以选择Varchar,否则你可以使用BigInt。
答案 1 :(得分:2)
您将cust_mobile
定义为int
,但尝试插入03451119182
,明显超出2147483647
的限制。
更改为bigint
或存储为VarChar(包括前导零)。
答案 2 :(得分:2)
create table tbl_customer(
id int identity primary key,
cust_name varchar(50) NOT NULL,
filecode varchar(20) NOT NULL,
cust_mobile varchar(20),
cust_cnic varchar(50) NOT NULL,
cust_phone varchar(20),
cust_address varchar(200)
)
insert into tbl_customer
(cust_name, filecode, cust_mobile, cust_cnic, cust_phone, cust_address )
values
('Jonah Gordian','LHR001','03451119182','11-22112-122','1212121212','abc street 12');
而且C#代码对SQL注入攻击是开放的,而不是使用参数。即:
string sql = @"insert into tbl_customer
(cust_name,filecode,cust_mobile,cust_cnic,cust_phone,cust_address)
VALUES
(@cust_name,@filecode,@cust_mobile,@cust_cnic,@cust_phone,@cust_address)";
using (SqlConnection con = new SqlConnection(@"server=.\SQLExpress;database=yourDbName;Trusted_Connection=yes"))
{
var cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@cust_name", txtname.Text);
cmd.Parameters.AddWithValue("@filecode", txtfilecode.Text);
cmd.Parameters.AddWithValue("@cust_mobile", txtmob.Text);
cmd.Parameters.AddWithValue("@cust_cnic", txtcnic.Text);
cmd.Parameters.AddWithValue("@cust_phone", txtphone.Text);
cmd.Parameters.AddWithValue("@cust_address", txtaddress.Text);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
答案 3 :(得分:0)
您使用int
bigint
尝试的限制
此值 3451119182
在此链接中查看限制
https://msdn.microsoft.com/pt-br/library/ms187745(v=sql.120).aspx