【发布时间】:2014-09-29 10:52:41
【问题描述】:
我已将 2 条记录写入数据库。第一条记录是用 SSMS 编写的,显示效果很好。第二条记录是使用 VS 中的存储过程调用编写的,该记录仅显示每个字段的第一个字母。第二条记录中唯一正确显示的字段是日期字段。所有列都存在。
在单击按钮时调用存储过程,并通过具有 create 方法的类的接口运行。
我在 create 方法上放了一个断点,所有从文本框传入的值都是它们应该是的值。
显然有些地方不太对劲,我似乎无法找到哪里出错了。 对不起,如果这有点冗长,但任何帮助将不胜感激!
第一条记录的 SQL INSERT
INSERT INTO Employees(Employee_ID, Full_Name, Date_Of_Birth, Home_Email, Work_Email, Work_Phone_Ext, Work_Phone, Home_Phone, Date_Started, Manager_ID, Client_Dept, Client_Start_Date, Client_Manager_Name, Leaver, Leave_Date, Contact_Person_Name, Contact_Person_Phone)
VALUES(0, 'Test Person1', '1982-07-05', 'test1@hometest.com', 'test1@worktest.com', '01234', '654789', '01234567891', '2006-06-15', 0, 'Test Dept', '2006-06-30', 'Dave Davidson', 'No', NULL, 'Test Cp', '085219874561')
第二条记录的 SQL 存储过程
CREATE PROCEDURE Create_Employee_Personal_Details @full_name VARCHAR,
@dob DATE, @home_email VARCHAR, @work_email VARCHAR, @work_ext VARCHAR, @work_phone VARCHAR,
@home_phone VARCHAR, @start_date DATE, @manager_ID INT, @client_dept VARCHAR,
@client_start_date DATE, @client_manager VARCHAR, @leaver VARCHAR, @leave_date DATE,
@contact_person VARCHAR, @contact_person_phone VARCHAR OUTPUT AS
DECLARE @employee_id INT
INSERT INTO Employees(Full_Name, Date_Of_Birth, Home_Email, Work_Email, Work_Phone_Ext, Work_Phone, Home_Phone, Date_Started, Manager_ID, Client_Dept, Client_Start_Date, Client_Manager_Name, Leaver, Leave_Date, Contact_Person_Name, Contact_Person_Phone)
VALUES (@full_name, @dob, @home_email, @work_email, @work_ext, @work_phone, @home_phone,
@start_date, @manager_ID, @client_dept, @client_start_date, @client_manager,
@leaver, @leave_date, @contact_person, @contact_person_phone)
SELECT @employee_id = MAX(Employees.Employee_ID)
FROM Employees
RETURN @employee_id
调用存储过程
employeeID = employeeDataAccessor.Create(tbFullName, tbDob, tbHomeEmail, tbWorkEmail, tbWorkPhoneExt, tbWorkPhone,
tbHomePhone, tbStartDate, managerID, tbClientDept, tbDateStartedClient, tbClientManager, methods.Leaver(rbYes, rbNo),
tbDateOfLeave, tbContactPerson, tbContactPersonPhone);
创建方法
public int Create(TextBox fullName, TextBox dob, TextBox homeEmail, TextBox workEmail,
TextBox workPhoneExt, TextBox workPhone, TextBox homePhone, TextBox startDate, int managerID, TextBox clientDept,
TextBox dateStartedClient, TextBox clientManager, string yesNo,TextBox dateOfLeave, TextBox contactPerson, TextBox cpPhoneNo)
{
var connection = new SqlConnection();
connection.ConnectionString = connectionString;
connection.Open();
var cmdIntoEmployees = new SqlCommand("EmployeeSystemProject.dbo.Create_Employee_Personal_Details", connection);
cmdIntoEmployees.CommandType = CommandType.StoredProcedure;
cmdIntoEmployees.Parameters.AddWithValue("@full_name", fullName.Text);
cmdIntoEmployees.Parameters.AddWithValue("@dob", Convert.ToDateTime(dob.Text));
cmdIntoEmployees.Parameters.AddWithValue("@home_email", homeEmail.Text);
cmdIntoEmployees.Parameters.AddWithValue("@work_email", workEmail.Text);
cmdIntoEmployees.Parameters.AddWithValue("@work_ext", workPhoneExt.Text);
cmdIntoEmployees.Parameters.AddWithValue("@work_phone", workPhone.Text);
cmdIntoEmployees.Parameters.AddWithValue("@home_phone", homePhone.Text);
cmdIntoEmployees.Parameters.AddWithValue("@start_date", Convert.ToDateTime(startDate.Text));
cmdIntoEmployees.Parameters.AddWithValue("@manager_ID", managerID);
cmdIntoEmployees.Parameters.AddWithValue("@client_dept", clientDept.Text);
cmdIntoEmployees.Parameters.AddWithValue("@client_start_date", Convert.ToDateTime(dateStartedClient.Text));
cmdIntoEmployees.Parameters.AddWithValue("@client_manager", clientManager.Text);
cmdIntoEmployees.Parameters.AddWithValue("@leaver", yesNo);
if (string.IsNullOrWhiteSpace(dateOfLeave.Text) == false)
{
cmdIntoEmployees.Parameters.AddWithValue("@leave_date", Convert.ToDateTime(dateOfLeave.Text));
}
else
{
cmdIntoEmployees.Parameters.AddWithValue("@leave_date", DBNull.Value);
}
cmdIntoEmployees.Parameters.AddWithValue("@contact_person", contactPerson.Text);
cmdIntoEmployees.Parameters.AddWithValue("@contact_person_phone", cpPhoneNo.Text);
employeeID = Convert.ToInt32(cmdIntoEmployees.ExecuteScalar());
return employeeID;
}
【问题讨论】:
标签: c# sql sql-server winforms stored-procedures