试图在MS访问中插入值时出现插入错误
本文关键字:插入 错误 MS 访问 | 更新日期: 2023-09-27 17:52:57
我是c#新手。请协助!
我得到一个错误时,试图插入值到我的数据库在MS访问错误消息是:Index(从零开始)必须大于或等于零并且小于参数列表的大小。
下面是我的代码: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 AzureSecureStore
{
public partial class Client : Form
{
OleDbConnection vcon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:'Users'SB18'Documents'Visual Studio 2010'Projects'AzureSecureStore'AzureSecureStore'AzcureSecureStore Database.accdb");
public Client()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
}
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
private void button5_Click(object sender, EventArgs e)
{
}
private void button4_Click(object sender, EventArgs e)
{
}
private void Client_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the 'azcureSecureStore_DatabaseDataSet5.Client' table. You can move, or remove it, as needed.
this.clientTableAdapter.Fill(this.azcureSecureStore_DatabaseDataSet5.Client);
// TODO: This line of code loads data into the 'azcureSecureStore_DatabaseDataSet2.Client' table. You can move, or remove it, as needed.
//this.clientTableAdapter.Fill(this.azcureSecureStore_DatabaseDataSet2.Client);
}
private void button2_Click(object sender, EventArgs e)
{
string ab = string.Format("insert into Client values({0}, '{1}', '{2}', {3}, {4}, '{5}', {6})", textBox1.Text, textBox2.Text, int.Parse(textBox3.Text), int.Parse(textBox4.Text), textBox9.Text, int.Parse(textBox10.Text));
OleDbCommand vcom = new OleDbCommand(ab, vcon);
vcom.ExecuteNonQuery();
MessageBox.Show("Data stored successfully");
vcom.Dispose();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
}
}
您是否更改了您的连接字符串
OleDbConnection vcon = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:'Users'SB18'Documents'Visual Studio 2010'Projects'AzureSecureStore'AzureSecureStore'AzcureSecureStore Database.accdb; Persist Security Info=False;");
你在这一行中有太多的参数占位符:
string ab = string.Format("insert into Client values({0}, '{1}', '{2}', {3}, {4}, '{5}', {6})",
textBox1.Text, textBox2.Text, int.Parse(textBox3.Text), int.Parse(textBox4.Text), textBox9.Text, int.Parse(textBox10.Text));
你有7个占位符但有6个参数。试着改成:
string ab = string.Format("insert into Client values({0}, '{1}', '{2}', {3}, {4}, '{5}')",
textBox1.Text, textBox2.Text, int.Parse(textBox3.Text), int.Parse(textBox4.Text), textBox9.Text, int.Parse(textBox10.Text));
你应该尝试这样在你的按钮点击事件
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0;" & _
"Data Source=C:'Database'RAAFeedback.mdb")
conn.Open();
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = connection;
cmd.CommandText = "INSERT INTO Feedback([FirstName],[LastName],[Email],[Priphone],[Secphone],[Comment]) & _
VALUES (@FirstName,@LastName,@Priphone,@Secphone,@Comment)";
cmd.Parameters.Add("@FirstName", OleDbType.VarChar).value = FirstName;
cmd.Parameters.Add("@LastName", OleDbType.VarChar).value = LastName;
cmd.Parameters.Add("@Email", OleDbType.VarChar).value = Email;
cmd.Parameters.Add("@Priphone", OleDbType.VarChar).value = Priphone;
cmd.Parameters.Add("@Secphone", OleDbType.VarChar).value = Secphone;
cmd.Parameters.Add("@Comment", OleDbType.VarChar).value = Comment;
cmd.ExecuteNonQuery();
conn.Close();
'Clear the text boxes after a new insert
FirstName.Text = ""
LastName.Text = ""
Email.Text = ""
Priphone.Text = ""
Secphone.Text = ""
Comment.Text = ""