PDA

View Full Version : سوال: خطای syntax error در موقع اجرای کوئری Insert



elahe1393
شنبه 05 مهر 1393, 16:37 عصر
این تابع وقتی اجرا میشه تو بخش ocm.ExecuteNonQuery(); خطای syntax error میده مشکل کجاست چندین بار کوئری رو از جهت syntax بررسی کردم مشکلی ندیدم!
public void InsertDataReport(string reportID, string patientCode, string date, string startTime, string endTime, string sportDeviceSetting)
{
OleDbConnection ocn = new OleDbConnection();
OleDbCommand ocm = new OleDbCommand();

ocn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "\\SportDatabase.accdb";

ocm.Connection = ocn;
ocm.CommandText = "INSERT INTO Report(ReportID,PatientCode,Date,StartTime, EndTime, SportDeviceSetting) VALUES(reportID,patientCode,date,startTime, endTime, sportDeviceSetting)";
ocm.Parameters.Clear();

ocm.Parameters.AddWithValue("ReportID", reportID);
ocm.Parameters.AddWithValue("PatientCode", patientCode);
ocm.Parameters.AddWithValue("Date", date);
ocm.Parameters.AddWithValue("StartTime", startTime);
ocm.Parameters.AddWithValue("EndTime", endTime);
ocm.Parameters.AddWithValue("SportDeviceSetting", sportDeviceSetting);

ocn.Open();
ocm.ExecuteNonQuery();
ocn.Close();

ocm.Dispose();
ocn.Dispose();
}

محمد آشتیانی
شنبه 05 مهر 1393, 16:47 عصر
سلام
قبل از پارامترها باید کاراکتر @بذارید



ocm.CommandText = "INSERT INTO Report(ReportID,PatientCode,Date,StartTime, EndTime, SportDeviceSetting) VALUES(@reportID,@patientCode,@date,@startTime, @endTime, @sportDeviceSetting)";


و همینطور موقع تعریف



ocm.Parameters.AddWithValue("@ReportID", reportID);
ocm.Parameters.AddWithValue("@PatientCode", patientCode);
ocm.Parameters.AddWithValue("@Date", date);
ocm.Parameters.AddWithValue("@StartTime", startTime);
ocm.Parameters.AddWithValue("@EndTime", endTime);
ocm.Parameters.AddWithValue("@SportDeviceSetting", sportDeviceSetting);


ترجیحا پارامتر Dateرو هم تغییر نام بدید.

samanelf
یک شنبه 06 مهر 1393, 00:39 صبح
مشکل حل شده ؟

elahe1393
یک شنبه 06 مهر 1393, 09:07 صبح
نه ربطی به درج @ قبل پارامتر نداره من یه تابع insert دیگه همینجوری نوشتم اون مشکلی نداره ولی این خطای syntax میده!
public void InsertSpeedData(string reapetID, int point, int speed, string color)
{
Guid speedID = Guid.NewGuid();
OleDbConnection ocn = new OleDbConnection();
OleDbCommand ocm = new OleDbCommand();

ocn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Application.StartupPath + "\\SportDatabase.accdb";

ocm.Connection = ocn;
ocm.CommandText = "INSERT INTO Speed(SpeedID,ReapetID,Point,Speed, Color) VALUES(speedID,reapetID,point,speed,color)";
ocm.Parameters.Clear();
ocn.Open();

ocm.Parameters.AddWithValue("speedID", speedID.ToString());
ocm.Parameters.AddWithValue("reapetID", reapetID);
ocm.Parameters.AddWithValue("point", point);
ocm.Parameters.AddWithValue("speed", speed);
ocm.Parameters.AddWithValue("color", color);

ocm.ExecuteNonQuery();
ocn.Close();

ocm.Dispose();
ocn.Dispose();

}

elahe1393
یک شنبه 06 مهر 1393, 09:15 صبح
مشکل سر همون Date بود اسم ستون تو دیتابیس عوض کردم حل شد