C#Prepared Statement Error - "找不到句柄1"

时间:2016-10-14 13:07:12

标签: c# mysql visual-studio

我正在查看从数据库填充数据的两个表单,并且我得到了一个"找不到带有句柄1和#34的准备好的语句。其中一个错误。根据我从其他帖子中收集到的内容,该错误通常是由他们的计算机上运行的SQL Express版本和/或他们正在使用的.NET框架版本引起的。

两个语句都是准备好的select语句,彼此非常相似,但只有第一个语句抛出错误。

除了所涉及的表和数据之外,两者之间唯一真正的区别是第一个(抛出错误的那个)也是从一个简单的for循环(7次)中填充的,其中一个参数增加了之一。

我有什么遗失的吗?是否有任何其他可能的原因导致除了机器使用的SQL / .NET框架版本之外产生错误?

Code1 throws"找不到句柄1"

的预准备语句
c.Open();

SqlCommand command = new SqlCommand(null, c);
command.CommandText = @"SELECT Patient.patientName + ' Gender:' + Patient.gender AS patient, Patient.patientName + ' [' + Patient.gender + '' + CAST(CAST(DATEDIFF(hour, Patient.birthdate, GETDATE()) / 8766.0 AS DECIMAL(4, 1)) AS VARCHAR(6)) + ']' AS patientSum, Patient.school, Patient.diagnosis, Patient.notes, Staff.staffName, Department.depName, Timeslot.time, CONVERT(VARCHAR(6), Schedule.date, 7) AS SchedDate, Schedule.notes, Contact.contactName, Contact.contactNo, Contact.email, Schedule.schedule_ID, Timeslot.timeslot_ID
FROM Timeslot LEFT OUTER JOIN Schedule ON (Timeslot.timeslot_ID = Schedule.timeslot_ID) AND (Schedule.date = @scheduleDate) AND Schedule.staff_ID = @scheduleStaff_ID
LEFT OUTER JOIN Staff ON Schedule.staff_ID = Staff.staff_ID
LEFT OUTER JOIN Department ON Staff.dep_ID = Department.dep_ID
LEFT OUTER JOIN Patient ON Schedule.patient_ID = Patient.patient_ID
LEFT OUTER JOIN Contact ON Patient.contact_ID = Contact.contact_ID;";

command.Parameters.Add("@scheduleDate", SqlDbType.Date).Value = weekArray[ctr];
command.Parameters.Add("@scheduleStaff_ID", SqlDbType.Int).Value = comboBox2.SelectedValue;

command.Prepare();
command.ExecuteReader();

SqlDataAdapter a = new SqlDataAdapter(command);
c.Close();

Code2没有问题

c.Open();

SqlCommand command = new SqlCommand(null, c);
command.CommandText = @"SELECT Patient.patient_ID, Patient.patientName, Patient.gender, CAST(DATEDIFF(hour, Patient.birthdate, GETDATE()) / 8766.0 AS DECIMAL(4, 1)) AS Age, Patient.birthdate, Patient.diagnosis, Patient.notes, Patient.school, Patient.referredBy, Patient.lastVisit, Patient.contact_ID, Contact.contactName, Contact.email, Contact.contactNo
FROM Patient INNER JOIN Contact ON Patient.contact_ID = Contact.contact_ID
WHERE Patient.patientName LIKE '%' + @patientName + '%'
OR Patient.diagnosis LIKE '%' + @diagnosis + '%'
OR Patient.notes LIKE '%' + @notes + '%'
ORDER BY Patient.patientName;";

command.Parameters.Add("@patientName", SqlDbType.VarChar, 50).Value = textBox1.Text;
command.Parameters.Add("@diagnosis", SqlDbType.VarChar, 250).Value = textBox1.Text;
command.Parameters.Add("@notes", SqlDbType.VarChar, 250).Value = textBox1.Text;

command.Prepare();
command.ExecuteReader();

SqlDataAdapter a = new SqlDataAdapter(command);
c.Close();

我应该注意错误只是由没有安装Visual Studio的其他机器生成的,我用于开发的那个机器根本不会抛出任何错误(所有先决条件都包含在安装中,即.net框架,sql,powerpacks等等。)

0 个答案:

没有答案