Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#插入SQL server值?我一直在变空_C#_Sql Server_Insert_Null - Fatal编程技术网

如何使用C#插入SQL server值?我一直在变空

如何使用C#插入SQL server值?我一直在变空,c#,sql-server,insert,null,C#,Sql Server,Insert,Null,我最近看了一个youtube教程,介绍如何使用c#类来运行sql命令和获取数据。这是我遵循的教程:在13:42,你可以看到他运行代码,将名称值插入文本框,然后能够在组合框中显示新值 但是,每当我运行代码时,都会出现以下错误(全尺寸图像可用): 我试图从中收集/插入数据的表有一个不能为null的“unr”int和一个varchar名称 这是我的SQL-DAL: using System; using System.Collections.Generic; using System.Linq; u

我最近看了一个youtube教程,介绍如何使用c#类来运行sql命令和获取数据。这是我遵循的教程:在13:42,你可以看到他运行代码,将名称值插入文本框,然后能够在组合框中显示新值

但是,每当我运行代码时,都会出现以下错误(全尺寸图像可用):

我试图从中收集/插入数据的表有一个不能为null的“unr”int和一个varchar名称

这是我的SQL-DAL:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using System.Data.Sql;

namespace WindowsFormsApplication3
{
class DAL
{
    private SqlConnection con;
    public SqlCommand cmd;
    private SqlDataAdapter da;
    private DataTable dt;

    public DAL()
    {
        con = new SqlConnection(@"Data Source=VIKTOR-PC;Initial Catalog=HT2015;Integrated Security=True");
        con.Open();
    }

    public void SqlQuery(string queryText)
    {
        cmd = new SqlCommand(queryText, con);
    }

    public DataTable QueryEx()
    {
        da = new SqlDataAdapter(cmd);
        dt = new DataTable();
        da.Fill(dt);
        return dt;
    }
    public void NoQueryEx()
    {
        cmd.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;

namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
    private WindowsFormsApplication3.DAL con;
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        con = new DAL();
        con.SqlQuery("INSERT INTO dbo.Users(name) VALUES (@NameP)");
        con.cmd.Parameters.Add("@NameP", textBox1.Text);
        con.NoQueryEx();
        con.SqlQuery("SELECT name FROM Users");
        comboBox1.Items.Clear();
        foreach(DataRow dr in con.QueryEx().Rows)
        {
            comboBox1.Items.Add(dr[1].ToString());
        }
    }
}
}

现在它一直说unr为null,我只想向表中添加新名称。我不知道如何解决这个问题。

您的表
用户
不可为空的
unr

但是您正在使用的查询:

INSERT INTO dbo.Users(name) VALUES (@NameP)
不会在unr中插入任何内容-这就是您获得该异常的原因


您应该在查询中的
unr
中插入一些内容,或者在表定义中将其设置为空(或具有一些默认值)。

您不了解错误的哪一部分?它说你不能为
unr
插入
NULL
,如果你没有在
insert
语句中指定它,这正是你想要做的。我确实理解这个错误,但我觉得必须有某种方法来添加新名称或自动生成unr。从应用程序的角度来看,用户输入unr和名称(餐厅餐桌预订)会很奇怪。有没有办法让unr自动生成并让用户手动输入名称?正如Andy Korneyev在他的回答中所说,在表定义中给它一个默认值。我现在给表添加了一个默认值,但它一直告诉我不能设置为null。我必须修改插入字符串吗?为什么它适用于youtube教程中的那个家伙?@user2925033在我的回答中,“具有默认值”的意思不是.NET DataTable中的默认值,而是服务器上的SQL表中的默认值。您在客户机的代码数据表定义中添加了一些默认值这一事实并不重要,因为您仍然没有在sql查询的
unr
中插入任何内容。因此,如果
1
是您的默认值,只需启动SQL Management Studio,打开数据库,找到
Users
表,并将其设置为
unr
列的默认值。