c# - ExecuteNonQuery需要一个打开的可用连接.连接的当前状态是关闭的
本文关键字:连接 状态 ExecuteNonQuery 一个 | 更新日期: 2023-09-27 17:52:40
我是c#新手。请协助!
我一直有以下错误:"ExecuteNonQuery需要一个打开的可用连接。连接的当前状态为关闭。"我也不能插入到我的数据库中。
下面是我的代码: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; Persist Security Info=False;");
//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}')",
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)
{
}
}
}
您忘记打开连接了,
vcon.Open();
vcom.ExecuteNonQuery();
,但记得用
-
using
语句——正确处置对象 -
try-catch
块——正确捕获异常(异常处理)
更新1
string connStr = @"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 query = "INSERT INTO Client VALUES(@col1,@col2,@col3,@col4,@col5,@col6)";
using (OleDbConnection conn = new OleDbConnection(connStr))
{
using (OleDbCommand comm = new OleDbCommand())
{
comm.Connection = conn;
comm.CommandText = query;
comm.CommandType = CommandType.Text;
comm.Parameters.AddWithValue("@col1", textBox1.Text);
comm.Parameters.AddWithValue("@col2", textBox2.Text);
comm.Parameters.AddWithValue("@col3", int.Parse(textBox3.Text));
comm.Parameters.AddWithValue("@col4", int.Parse(textBox4.Text));
comm.Parameters.AddWithValue("@col5", textBox9.Text);
comm.Parameters.AddWithValue("@col6", int.Parse(textBox10.Text));
try
{
conn.Open();
comm.ExecuteNonQuery();
MessageBox.Show("Data stored successfully");
}
catch(OleDbException e)
{
MessageBox.Show(e.ToString());
}
}
}
- AddWithValue
- 添加(建议使用)
要连接数据库,您需要打开连接所以使用
vcon.Open();
然后
vcom.ExecuteNonQuery();