使用的SQL Server 2008 为什么数据插不进啊
不能将值 NULL 插入列 'OrderID',表 'Shopping.dbo.Order';列不允许有 Null 值。INSERT 失败。
语句已终止。 为什么会有这个错啊
肯定有错误的,你看下错误信息是什么。
在哪里看错误信息啊
public int AddOrder(string sql,Order order)
{
int i;
try
{
openCon();
cmd = new SqlCommand(sql, con);
cmd.CommandType = CommandType.StoredProcedure;
#region
SqlParameter[] pars = new SqlParameter[] {
new SqlParameter("@UserID", SqlDbType.VarChar, 20),
new SqlParameter("@PayWay", SqlDbType.VarChar,20),
new SqlParameter("@SendWay", SqlDbType.VarChar,20),
new SqlParameter("@OrderTime", SqlDbType.DateTime),
new SqlParameter("@TotelNumber", SqlDbType.Int),
new SqlParameter("@TotelPrice", SqlDbType.Money),
new SqlParameter("@OrderStatus", SqlDbType.VarChar,20),
new SqlParameter("@ReceiverName", SqlDbType.VarChar,20),
new SqlParameter("@ReceiverPhone", SqlDbType.VarChar,20),
new SqlParameter("@ReceiverAddr", SqlDbType.VarChar,20),
new SqlParameter("@ReceiverPostcode", SqlDbType.VarChar,20),
};
pars[0].Value = order.UserID;
pars[1].Value = order.PayWay;
pars[2].Value = order.SendWay;
pars[3].Value = order.OrderTime;
pars[4].Value = order.TotelNumber;
pars[5].Value = order.TotelPrice;
pars[6].Value = order.OrderStatus;
pars[7].Value = order.ReceiverName;
pars[8].Value = order.ReceiverPhone;
pars[9].Value = order.ReceiverAddr;
pars[10].Value = order.ReceiverPostcode;
#endregion
foreach (SqlParameter parameter in pars)
{
cmd.Parameters.Add(parameter);
}
i = cmd.ExecuteNonQuery();
}
catch
{
i = -1;
}
finally
{
this.closeCon();
}
return i;
}
这段代码跳到catch模块去了 的值是负1 不知道什么错
@小柑: 把 catch { i = -1; } 去掉,这样就可以看到具体的错误信息了。
@小柑: 看到-1,说明有异常。此时,把异常信息打印出来。也可以跟踪后查看。如果你不用try-catch,应该抛出异常的。
具体的错误必须有你的异常信息才可以确定。
另外,最好你把你的存储过程的内容也贴出来才好分析。
@笨笨蜗牛: SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[PRO_AddOrder]
@UserID varchar(20),
@PayWay varchar(20),
@SendWay varchar(20),
@OrderTime DateTime,
@TotelNumber int,
@TotelPrice money,
@OrderStatus varchar(20),
@ReceiverName varchar(20),
@ReceiverAddr varchar(20),
@ReceiverPostcode varchar(20),
@ReceiverPhone varchar(20)
AS
BEGIN
INSERT INTO [Order](UserID, PayWay, SendWay, OrderTime, TotelNumber,TotelPrice,
OrderStatus,ReceiverName,ReceiverAddr,ReceiverPostcode,ReceiverPhone)
VALUES (@UserID, @PayWay, @SendWay, @OrderTime, @TotelNumber,@TotelPrice,
@OrderStatus,@ReceiverName,@ReceiverAddr,@ReceiverPostcode,@ReceiverPhone)
END
@笨笨蜗牛:
这是存储过程执行没有错
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[PRO_AddOrder]
@UserID varchar(20),
@PayWay varchar(20),
@SendWay varchar(20),
@OrderTime DateTime,
@TotelNumber int,
@TotelPrice money,
@OrderStatus varchar(20),
@ReceiverName varchar(20),
@ReceiverAddr varchar(20),
@ReceiverPostcode varchar(20),
@ReceiverPhone varchar(20)
AS
BEGIN
INSERT INTO [Order](UserID, PayWay, SendWay, OrderTime, TotelNumber,TotelPrice,
OrderStatus,ReceiverName,ReceiverAddr,ReceiverPostcode,ReceiverPhone)
VALUES (@UserID, @PayWay, @SendWay, @OrderTime, @TotelNumber,@TotelPrice,
@OrderStatus,@ReceiverName,@ReceiverAddr,@ReceiverPostcode,@ReceiverPhone)
END
很明显啊!表中OrderID的字段数据你为空的,里面要求你必填的嘛!都提示得很清楚了!
@笨笨蜗牛:
你好!不能将值 NULL 插入列 'OrderID',表 'Shopping.dbo.Order';列不允许有 Null 值。INSERT 失败。
语句已终止。 这个错怎么改啊,为什么OrderID 主键 不是自动生成的吗?
我没插这个字段啊 不是可以自动生成的吗?怎么使它自动生成啊?
@小柑: 你的表定义里orderid这个字段吧?这个字段的值要求不能为空吧?错误就在这里。
如果你的orderid可以是流水的,你把orderid修改为自增字段,就可以简单解决。
@小柑: 你在数据库设计该字段的时候并没有将其设置为Identity.
@笨笨蜗牛: 哦 明白了 非常感谢啊
跟踪下,看下提示什么错误!!