是C#的新手,需要我的项目帮助。 请帮忙!
我想创建一个插入函数,它允许我将数据插入到MS Access DB中。 但是,我一直收到错误声明在语句末尾缺少分号(;)并且数据不会结束
以下是我的代码,
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace Insert
{
public partial class Form1 : Form
{
OleDbConnection vcon= new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C://Database//HelloDB.accdb");
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
vcon.Open();
}
private void buttonExit_Click(object sender, EventArgs e)
{
this.Close();
}
private void buttonSave_Click(object sender, EventArgs e)
{
string ab = string.Format("insert into Hello values(id, 'Hname'))", int.Parse(textBox1.Text), textBox2.Text);
OleDbCommand vcom = new OleDbCommand(ab, vcon);
vcom.ExecuteNonQuery();
MessageBox.Show("Data stored successfully");
vcom.Dispose();
}
}
答案 0 :(得分:1)
首先,这条线向我伸出:
string ab = string.Format("insert into Hello values(id, 'Hname'))", int.Parse(textBox1.Text), textBox2.Text);
我相信它应该是:
/*!*/
string ab = string.Format("insert into Hello values({0}, '{1}')", int.Parse(textBox1.Text), textBox2.Text);
其次,您应该使用参数化SQL。 Here是我编写的一个示例,用于演示如何为UPDATE
语句使用参数化SQL。该代码主要适用于其他语句类型,例如SELECT
或INSERT
。
虽然,实际上,您应该评估使用JET / ACE进行数据访问。 JET附带Windows,但ACE没有。因此,在您的代码中,您依赖于ACE。考虑是否更好地依赖SQL Server LocalDB。
答案 1 :(得分:0)
用以下内容替换您的查询:
string ab = string.Format(“插入Hello值({0},'{1}')”,int.Parse(textBox1.Text),textBox2.Text);