首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SqlException in ExecuteNonQuery

SqlException in ExecuteNonQuery
EN

Stack Overflow用户
提问于 2017-07-14 09:09:45
回答 2查看 221关注 0票数 1

这是我的代码,每当我在文本框中输入,然后单击按钮,就会发生错误:

未处理SqlException,列名或提供的值数与表定义不匹配。

请帮帮忙

代码语言:javascript
复制
private void button1_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(@"Data Source=XXYZZ\SQLEXPRESS;AttachDbFilename=C:\Users\trist\Documents\Invent.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;");

    SqlCommand cmd = new SqlCommand ("Insert into tblLogin values ('"+ txtUsername.Text + '"'+ txtPassword.Text + "')",con);

    con.Open();
    int i = cmd.ExecuteNonQuery();
    con.Close();

    if (i > 0)
    {
        MessageBox.Show("Registered");
    }
    else
    {
        MessageBox.Show("HEHE");
    }
}
EN

回答 2

Stack Overflow用户

发布于 2017-07-14 09:15:22

insert SQL有两个列值,必须用逗号分隔,但没有:

代码语言:javascript
复制
// your incorrect SQL query:
SqlCommand cmd = new SqlCommand ("Insert into tblLogin values ('"+ txtUsername.Text + '"'+ txtPassword.Text + "')",con);

但是,您应该开始使用参数化查询f.e,而不是修复这个问题。为了防止SQL注入:

代码语言:javascript
复制
SqlCommand cmd = new SqlCommand ("Insert into tblLogin values (@user, @password)",con);
cmd.Parameters.Add("@User", SqlDbType.VarChar).Value =  txtUsername.Text;
cmd.Parameters.Add("@Password", SqlDbType.VarChar).Value =  txtPassword.Text;

您还应该将using语句用于实现IDisposable的所有东西,比如连接和命令。在那条路上。确保即使在异常情况下也处理/关闭连接(重要)。

票数 2
EN

Stack Overflow用户

发布于 2017-07-14 09:18:34

你错过了一个逗号(,)

代码语言:javascript
复制
values ('"+ txtUsername.Text + '"'+ txtPassword.Text + "')",con); 

最好指定列名。

代码语言:javascript
复制
INSERT INTO MyTable(Column1, Column2) 
VALUES (Value1, Value2), (Value1, Value2)
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45099034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档