SqlDataAdapter插入数据库不工作c# winform
本文关键字:winform 工作 插入 数据库 SqlDataAdapter | 更新日期: 2023-09-27 18:16:57
我正在尝试将数据插入SQL Server数据库并从c# Winforms显示在DatagridView上。
我点击插入按钮,没有错误显示,但没有数据被插入到数据库和Datagridview变为空白。
我重新调试,可以看到数据更新在datagridview,但数据库不在Visual Studio Server Explorer数据库(picture1)。
另一方面。我在单击Insert Button时设置断点,跳过第42~46行。直接到第50行ex(图2)
picture1
picture2
编辑:现在的问题是,当我点击插入按钮,datagridview有更新新的数据。但是数据库没有插入新的数据。数据库只有两个数据
Edit2 我改变了连接字符串AttachDbFilename。AttachDbFilename=C:'Vis'NO4'WindowsFormsApplication1'App_Data'Database1.mdf;
该值可以插入数据库。
下面是连接字符串:
<add name="con1" connectionString="Data Source=(LocalDB)'v11.0;AttachDbFilename=|DataDirectory|'Database1.mdf;Integrated Security=True"
providerName="System.Data.SqlClient" />
Form_load和load_grid函数
SqlConnection con;
SqlDataAdapter da;
DataSet ds = new DataSet();
DataTable dt = new DataTable();
public Form1()
{
InitializeComponent();
string connectionString = ConfigurationManager.ConnectionStrings["con1"].ConnectionString;
con = new SqlConnection(connectionString);
}
private void Form1_Load(object sender, EventArgs e)
{
load_grid();
}
public void load_grid()
{
dt.Clear();
SqlDataAdapter da1 = new SqlDataAdapter();
try
{
string sql = "SELECT * FROM profile";
con.Open();
da1.SelectCommand = new SqlCommand(sql, con);
da1.Fill(ds);
da1.Fill(dt);
con.Close();
dataGridView1.DataSource = dt;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
插入按钮
private void button1_Click(object sender, EventArgs e)
{
string ac = textBox1.Text;
string bd = textBox2.Text;
string sex = textBox2.Text;
string sql = "INSERT INTO profile(ac,bd,sex)VALUES('" + ac + "','" + bd + "','" + sex + "')";
try
{
con.Open();
da = new SqlDataAdapter();
da.InsertCommand = new SqlCommand(sql, con);
da.InsertCommand.ExecuteNonQuery();
da.Update(dt);
MessageBox.Show("INsert success...!!");
load_grid();
con.Close();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
这是客户表的设计
CREATE TABLE [dbo].[profile] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[ac] NVARCHAR (50) NULL,
[bd] NVARCHAR (50) NULL,
[sex] NVARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC));
不知道问题出在哪里
Picture2显示连接已经打开的异常,因此,在打开连接之前尝试以下操作。在关闭连接之前,您正在呼叫load_grid();
。我已经更新了所有的代码,使用它如下所示:
编辑-第二次修订:
public void load_grid()
{
dt.Clear();
SqlDataAdapter da1 = new SqlDataAdapter();
try
{
string sql = "SELECT * FROM profile";
con.Open();
da1.SelectCommand = new SqlCommand(sql, con);
da1.Fill(ds);
da1.Fill(dt);
con.Close();
dataGridView1.DataSource = dt;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (con.State != System.Data.ConnectionState.Closed)
con.Close();
}
}
private void button1_Click(object sender, EventArgs e)
{
string ac = textBox1.Text;
string bd = textBox2.Text;
string sex = textBox2.Text;
string sql = "INSERT INTO profile(ac,bd,sex)VALUES('" + ac + "','" + bd + "','" + sex + "')";
try
{
con.Open();
da = new SqlDataAdapter();
da.InsertCommand = new SqlCommand(sql, con);
da.InsertCommand.ExecuteNonQuery();
da.Update(dt);
con.Close();
MessageBox.Show("INsert success...!!");
load_grid();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (con.State != System.Data.ConnectionState.Closed)
con.Close();
}
}