今天碰到一个这样纳闷的情况
我有一个插入(insert into)的存储过程,在服务器上面无法把数据插入到数据表里,程序也不报错,直接提示插入成功(查了一下数据库,才知道数据根本没插入进来);但在本机测试可以成功插入到数据库
为什么解决这个问题,我测试不用存储过程,在服务器上面通过了测试,程序写进了数据库.
但存储过程就写不进来,我想问的是:这个问题是程序本身的原因,还是服务器设置的原因!
服务器是(win2003)本机(WINXP)
我有一个插入(insert into)的存储过程,在服务器上面无法把数据插入到数据表里,程序也不报错,直接提示插入成功(查了一下数据库,才知道数据根本没插入进来);但在本机测试可以成功插入到数据库
为什么解决这个问题,我测试不用存储过程,在服务器上面通过了测试,程序写进了数据库.
但存储过程就写不进来,我想问的是:这个问题是程序本身的原因,还是服务器设置的原因!
服务器是(win2003)本机(WINXP)
ALTER Procedure EmailsAdd
(
@FromUser nvarchar(50),
@UserName nvarchar(50),
@Title nvarchar(50),
@Body varchar(6000),
@Status bit,
@CreatDate datetime,
@EmailID int OUTPUT
)
ASINSERT INTO Emails
(
FromUser,
UserName,
Title,
Body,
Status,
CreatDate
)
VALUES
(
@FromUser,
@UserName,
@Title,
@Body,
@Status,
@CreatDate
)SELECT
@EmailID = @@Identity//调用代码
public int Insert(string fromUser, string userName, string title, string body, bool status, DateTime creatDate)
{
// Create Instance of Connection and Command Object
SqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
SqlCommand myCommand = new SqlCommand("EmailsAdd", myConnection); // Mark the Command as a SPROC
myCommand.CommandType = CommandType.StoredProcedure; #region Add Parameters to SPROC
SqlParameter parameterFromUser = new SqlParameter("@FromUser", SqlDbType.NVarChar, 50);
parameterFromUser.Value = fromUser;
myCommand.Parameters.Add(parameterFromUser);
SqlParameter parameterUserName = new SqlParameter("@UserName", SqlDbType.NVarChar, 50);
parameterUserName.Value = userName;
myCommand.Parameters.Add(parameterUserName); SqlParameter parameterTitle = new SqlParameter("@Title", SqlDbType.NVarChar, 50);
parameterTitle.Value = title;
myCommand.Parameters.Add(parameterTitle); SqlParameter parameterBody = new SqlParameter("@Body", SqlDbType.NVarChar, 6000);
parameterBody.Value = body;
myCommand.Parameters.Add(parameterBody); SqlParameter parameterStatus = new SqlParameter("@Status", SqlDbType.Bit, 1);
parameterStatus.Value = status;
myCommand.Parameters.Add(parameterStatus); SqlParameter parameterCreatDate = new SqlParameter("@CreatDate", SqlDbType.DateTime, 8);
parameterCreatDate.Value = creatDate;
myCommand.Parameters.Add(parameterCreatDate); SqlParameter parameterEmailID = new SqlParameter("@EmailID", SqlDbType.Int, 4);
parameterEmailID.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterEmailID); #endregion // Execute the command
int Id=0;
try
{
myConnection.Open();
myCommand.ExecuteNonQuery(); Id = (int)parameterEmailID.Value;
}
catch
{
Id=0;
}
finally
{
myConnection.Close();
}
return Id;
}
用其的profiler来查看一下,看看你的存储是否进行,如果没有进行的话
(
@FromUser nvarchar(50),
@UserName nvarchar(50),
@Title nvarchar(50),
@Body varchar(6000),
@Status bit,
@CreatDate datetime,
@EmailID int OUTPUT
)
ASINSERT INTO Emails
(
FromUser,
UserName,
Title,
Body,
Status,
CreatDate
)
VALUES
(
@FromUser,
@UserName,
@Title,
@Body,
@Status,
@CreatDate
)SELECT
@EmailID = @@Identity
GO --submit your operation--
Begin tran
commit里面试一下
如成功可能使你的主程序出问题
问句,主程序是用Java写的吗?