string sql = string.Format("insert into News_Info Values('{0}','{1}','{2}','{3}','{4}')",GetID,txt_Title,txt_Text,GetTime,txt_Rank);
SqlCommand cmd = new SqlCommand(sql, conn);
int x = 0;
x = cmd.ExecuteNonQuery();
if (x > 0)
{
Label3.Text="添加成功!";
}
else
{
Label3.Text="添加失败!";
}
执行到 x = cmd.ExecuteNonQuery();的时候会报错说String or binary data would be truncated.
The statement has been terminated.
但是我直接插入从数据库插入数据的话,是没有问题的,为什么啊?
楼下,同样的数据,我在数据库中直接插入就能成功,但是在代码里面插入就是运行不了的,为什么呢~~~求解~~~谢谢~~~
C#.net 往数据库中插入数据的时候报错
答案:6 悬赏:0
解决时间 2021-02-22 06:02
- 提问者网友:巴黎塔下许过得承诺
- 2021-02-21 09:55
最佳答案
- 二级知识专家网友:绝望伪装
- 2021-02-21 10:05
肯定是你插入的数据与数据库中字段类型不一致,你跟踪调试一下,把跟踪调试的SQL语句放在数据库中执行下,就知道问题所在了
全部回答
- 1楼网友:魅世女王
- 2021-02-21 14:40
你的错误是:"字符串或二进制数据将被截断。
该语句已终止。"也就是说你的一个字段长度太长,超出了你定义字段的长度.把字段长度改大点就行了.
你传的都是变量,你调试一下,看你的变量你面的值对不对
- 2楼网友:浪者不回头
- 2021-02-21 13:31
连接没打开
加一句
conn.Open();
x = cmd.ExecuteNonQuery();
- 3楼网友:糜废丧逼
- 2021-02-21 12:15
数据类型错误吧,你的那个GetID获得是ID,你的这张表的那个ID字段应该是INT型数据吧。而你插入的是字符串类型,把那两个单引号去掉试试。
还有一楼说的也对,这个错误也会因为长度长了儿报错。你可以把你要插入的数据原样的在数据库插入以下试试看,记住是原样写入,不要随便写,那样什么也测试不出来
- 4楼网友:萌萌哒小可爱
- 2021-02-21 11:14
你可以使用一些不会报错的方式将object转换为字符串
如
str_max=string.Format("",myReader[0]);
当yReader[0]为null时将返回string.Empty,此方法永远不返回NULL
str_max=myReader[0] as string;
当转换失败时不会出异常而是返回null
- 5楼网友:孤伤未赏
- 2021-02-21 10:47
杀掉所有用户再执行你的操作,下面是转贴:
先杀所用访问该数据库进程:
conn是master系统数据库的连接
//获取所有用户进程
string strsql = "select spid from master..sysprocesses where dbid=db_id('数据库名')"
sqldataadapter da=new sqldataadapter(strsql, conn);
datatable spidtable=new datatable;
da.fill(spidtable);
sqlcommand cmd = new sqlcommand();
cmd.commandtype = commandtype.text;
cmd.connection = conn;
for (int irow = 0; irow <= spidtable.rows.count - 1; irow++)
{
cmd.commandtext="kill " + spidtable.rows[irow][0].tostring(); //强行关闭用户进程
cmd.executenonquery();
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯