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

时间:2015-02-13 13:12:33

标签: c# sql-server insert null

我最近查看了一个关于如何使用c#-class运行sql-commands和获取数据的youtube教程。这是我所遵循的教程:https://www.youtube.com/watch?v=WG3Hwk7Yp48#t=13m42s在13:42您可以看到他运行他的代码,将名称值插入文本框,然后能够在组合框中显示新值。

但是,每当我运行我的代码时,我都会收到此错误(可提供完整图片here):

enter image description here

我尝试收集/插入数据的表格中有一个' unr' int不能为null,名称为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,我想要的只是向表中添加新名称。我还没有找到解决这个问题的线索。

1 个答案:

答案 0 :(得分:1)

您的表格Users不可空unr

但您正在使用此查询:

INSERT INTO dbo.Users(name) VALUES (@NameP)

不会在unr中插入任何内容 - 这就是您获得该异常的原因。

您应该在查询中向unr插入一些内容,或者在表定义中使其可以为空(或具有一些默认值)。