首页 > 解决方案 > 我有一个 C# Windows 窗体可以将值输入到 SQL Server 数据库中,但它不会工作,但没有错误?

问题描述

我创建了一个简单的 Windows 表单来将数据输入到 SQL Server 数据库表中。表面上看起来很好,没有错误,但是提交数据到表格后,数据并没有出现。我查看了连接指向的位置,这似乎很好。所以我现在被困住了。任何帮助都会很棒。

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.SqlClient;

namespace WindowsFormsApp7
{
    public partial class Onbutton1_Click : Form
    {
        public Onbutton1_Click()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                String str = 
"den1.mssql7.gear.host;database=generic;UID=generic;password=Generic";
                String cmdText1 = "INSERT INTO TEST1 (Name) VALUES ('%'+ @Name + '%')";
                String cmdText2 = "INSERT INTO TEST1 (Age) VALUES ('%'+ @Age + '%')";

                SqlConnection con = new SqlConnection(str);

                SqlCommand cmd1 = new SqlCommand(cmdText1, con);
                SqlCommand cmd2 = new SqlCommand(cmdText2, con);  
                cmd1.Parameters.Add("@Name", SqlDbType.VarChar, 255).Value =  textBox1.Text;
                cmd2.Parameters.Add("@Age", SqlDbType.VarChar, 255).Value = textBox2.Text;

                con.Open();

                cmd1.ExecuteNonQuery();
                cmd2.ExecuteNonQuery();

                DataSet ds = new DataSet();
                con.Close();
        }
        catch (Exception es)
        {
            MessageBox.Show("Complete");
        }
    }
}

标签: c#sql-servervisual-studiofrontend

解决方案


你的问题在这里

String cmdText1 = "INSERT INTO TEST1 (Name) VALUES ('%'+ @Name + '%')";
String cmdText2 = "INSERT INTO TEST1 (Age) VALUES ('%'+ @Age + '%')";

这需要

 String cmdText1 = "INSERT INTO TEST1 (Name) VALUES (@Name)";
 String cmdText2 = "INSERT INTO TEST1 (Age) VALUES (@Age)";

顺便说一句,很好奇为什么这是两个单独的陈述。如果要将 Name 和 Age 插入单行,则需要是单个查询。

 String cmdText = "INSERT INTO TEST1 (Name,Age) VALUES (@Name,@Age)";
 cmd1.Parameters.Add("@Name", SqlDbType.VarChar, 255).Value = textBox1.Text;
 cmd1.Parameters.Add("@Age", SqlDbType.VarChar, 255).Value = textBox2.Text;

推荐阅读