sql server-我的数据没有';t保存在我的数据库-C#visual studio中

本文关键字:我的 存在 保存 数据库 studio -C#visual 数据 server- sql | 更新日期: 2023-09-27 18:00:42

我有这个问题,visual studio没有显示任何类型的错误,但当我试图保存数据并检查我的数据库时,它是空的,不知道错误在哪里,请帮忙

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;
using System.IO;
using System.Runtime.InteropServices;

namespace PAPA
{
    public partial class Form11 : Form
    {
        SqlConnection cn = new SqlConnection(@"Data Source=(LocalDB)'v11.0;AttachDbFilename=E:'Documents'basededadospap.mdf;Integrated Security=True;Connect Timeout=30");
        SqlCommand cmd = new SqlCommand();
        public Form11()
        {
            InitializeComponent();
        }
        void Fillcombo() {
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "" & textBox2.Text != "" & textBox3.Text != "" & textBox4.Text != "" & textBox5.Text != "")
            {
                using (var connection = new SqlConnection(@"Data Source=(LocalDB)'v11.0;AttachDbFilename=E:'Documents'basededadospap.mdf;Integrated Security=True;Connect Timeout=30"))
                {
                    connection.Open();
                    var cmd = connection.CreateCommand();
                    cmd.CommandText = "INSERT INTO fornecedor (nomefornecedor,nmrcontribuinte,morada,email,obs) VALUES ('" + textBox1.Text + "','" + textBox2.Text + "', '" + textBox3.Text + "', '" + textBox4.Text + "' , '" + textBox5.Text + "')";
                    cmd.Clone();
                    MessageBox.Show(" Fornecedor inserido com sucesso! ");
                    cn.Close();
                }
            }
        }

sql server-我的数据没有';t保存在我的数据库-C#visual studio中

显然,您永远不会执行命令。

使用ExecuteNonQuery来执行它。而您的Clone似乎没有必要,因为您没有保留其复制的命令

但更重要的是,您应该始终使用参数化查询。这种字符串串联对SQL注入攻击是开放的。

string conString = @"Data Source=(LocalDB)'v11.0;AttachDbFilename=E:'Documents'basededadospap.mdf;Integrated Security=True;Connect Timeout=30");
using(var connection = new SqlConnection(conString))
using(var cmd = connection.CreateCommand())
{
     cmd.CommandText = @"INSERT INTO fornecedor (nomefornecedor,nmrcontribuinte,morada,email,obs) 
                         VALUES (@nome, @nmr, @mora, @email, @obs)";
     cmd.Parameters.AddWithValue("@nome", textBox1.Text);
     cmd.Parameters.AddWithValue("@nmr", textBox2.Text);
     cmd.Parameters.AddWithValue("@mora", textBox3.Text);
     cmd.Parameters.AddWithValue("@email", textBox4.Text);
     cmd.Parameters.AddWithValue("@obs", textBox5.Text);
     connection.Open();
     cmd.ExecuteNonQuery();
}

我在示例中使用了AddWithValue方法,因为我不知道您的列类型,但您没有使用此方法。它有时可能会产生意想不到的结果。使用Add重载来指定参数类型及其大小。