Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.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# 是什么原因造成的;“数据库表定义错误”;错误_C#_Asp.net_C# 4.0 - Fatal编程技术网

C# 是什么原因造成的;“数据库表定义错误”;错误

C# 是什么原因造成的;“数据库表定义错误”;错误,c#,asp.net,c#-4.0,C#,Asp.net,C# 4.0,这是我编程的第一步。伙计们,需要你们的帮助。我看了youtube视频并编写了一个小程序,和他写的完全一样。他没有错误。但我得到了错误。我只是传递了textbox值数据库。(错误是数据库表定义错误)。在我的表中,我用于此字段的是BBMgrID nvarchar(50)NOT NULL SqlConnection con = new SqlConnection("Data Source=spilap;Initial Catalog=spiDB;User ID=sa;Password=sa123");

这是我编程的第一步。伙计们,需要你们的帮助。我看了youtube视频并编写了一个小程序,和他写的完全一样。他没有错误。但我得到了错误。我只是传递了textbox值数据库。(错误是数据库表定义错误)。在我的表中,我用于此字段的是BBMgrID nvarchar(50)NOT NULL

SqlConnection con = new SqlConnection("Data Source=spilap;Initial Catalog=spiDB;User ID=sa;Password=sa123");

    protected void btn_submit_Click(object sender, EventArgs e)
    {
        con.Open();
        SqlCommand cmd = new SqlCommand("Insert into tbl_BBmgr values('" + TextBox1.Text+"')",con);
        cmd.ExecuteNonQuery();
    }

你应该这样写:
插入tbl_BBmgr(BBMgrID)值(“+TextBox1.Text+”)

如果您声明DB表中有5个字段,则需要显式指定希望该值的列:

SqlCommand cmd = new SqlCommand("Insert into tbl_BBmgr (BBMgrID) values('" + TextBox1.Text+"')",con);
编辑:现在和将来,为了确保向相应字段发送正确的值,建议在INSERT语句中指定以下列:

INSERT INTO Name_Of_Table ([Column1], [Column2], [Column3], ...) VALUES ([Value_For_Column1], [Value_For_Column2], [Value_For_Column3], ...)
试试这个:

SqlCommand cmd = new SqlCommand("Insert [TableName] ([ColumnName]) Values(@A)", con);
            cmd.Parameters.AddWithValue("@A", TextBox1.text);
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
更新:

SqlCommand cmd = new SqlCommand("Insert [TableName] ([Column1],[Column2],[Column3]) Values(@A,@B,@C)", con);
        cmd.Parameters.AddWithValue("@A", TextBox1.text);
        cmd.Parameters.AddWithValue("@B", TextBox2.text);
        cmd.Parameters.AddWithValue("@C", TextBox3.text);
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();

你的电脑名为spilap吗?您是否有一个名为spiDB的SQL Server实例,其表tbl_BBmgr只有一个字段BBMgrID?SQL Server实例的sa密码是否为sa123?尝试将nvarchar(50)更改为varchar(50)您的表中是否有自动递增的主键字段?尝试使用
插入tbl_BBmgr(BBMgrID)值(“+TextBox1.Text+”)“
@JohnGathogo使用spilap数据库登录sql server是spiDB表是tbl\u BBmgr。。。我有5个文件,但BBmgrID不是空文件。所有其他空字段请解释在这一行cmd.Parameters.AddWithValue(“@A”,TextBox1.text)中发生的情况+1用于使用参数化查询和避免SQL注入。如果要在查询行中声明一个值,则必须在声明名称之前使用@,例如@a或@name,您可以在@之后使用与声明完全相同的任何内容。然后,当您想显示@A的意思时,您必须使用Parameters.AddWithValue,第一个值是声明的值@A,第二个值必须是值TextBox1.Text。@软件行业的aliboy38也这样做吗?(我是指商业应用?)@SpiderX是的。所以请把这个答案标记为已回答的问题。不,你不应该。此代码易受SQL注入攻击。请参见
aliboy38
answer以了解正确的操作方法。