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();
}
}
}
显然,您永远不会执行命令。
使用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
重载来指定参数类型及其大小。