【发布时间】:2021-12-20 11:47:27
【问题描述】:
我正在创建一个显示日历事件的窗口窗体。
当我在特定日期添加事件时,我收到此错误:
System.Data.SqlClient.SqlException: '值'附近的语法不正确
在线cmd.ExecuteNonQuery();。
这是我的代码:
namespace PRN_Project
{
public partial class EventForm : Form
{
String ConnectionString = "server=DESKTOP-7NUQVBN; database=Calendar; uid=sa; pwd=123";
public EventForm()
{
InitializeComponent();
}
private void EventForm_Load(object sender, EventArgs e)
{
tbDate.Text = UserControlDays.static_day + "/" + CalendarForm.static_month + "/" + CalendarForm.static_year;
}
private void btSave_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();
String sql = "INSERT INTO CalendarEvent (TimeDate, EventName) VALUE (?, ?)";
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
cmd.Parameters.AddWithValue("TimeDate", tbDate.Text);
cmd.Parameters.AddWithValue("EventName", tbEvent.Text);
cmd.ExecuteNonQuery();
MessageBox.Show("Saved!");
cmd.Dispose();
conn.Close();
}
}
}
我正在使用 SQL Server 身份验证。
TimeDate 和 EventName 的数据类型是 varchar(255)。
【问题讨论】:
-
VALUES 不是 VALUE。
INSERT INTO TABLE_NAME VALUES (COLUMN_1, COLUMN2) -
VALUES不是VALUE。理想情况下,您应该使用命名参数INSERT INTO CalendarEvent(TimeDate, EventName) values (@TimeDate, EventName)。另请注意:AddWithValueis Evil,明确指定参数类型和长度。并且你需要using块连接和命令对象 -
@Charlieface 你能具体解释一下吗,我是新手
标签: c# sql-server