数据未从Windows窗体中插入数据库表中

时间:2014-01-29 10:01:35

标签: c# asp.net sql-server-2008

我正在使用桌面应用程序。我开发了一个用户输入数据的表单。当他单击提交按钮时,数据将保存在数据库名称PakReaEstat中。问题是表中没有插入数据,我收到错误:SqlException was Unhandled

当我点击“提交”按钮时,它会提示错误。 按钮后面的代码如下:

protected void button2_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection("Data Source=ali-pc/sqlexpress.PakEstateAgency.dbo"); 
    con.Open();
    SqlCommand cmd = new SqlCommand("insert into ClientINFO(Application#,LDAReg#,Size,Name,SDW/O,CNIC,Address,Image,giventime)" + 
                                    "values (" + Convert.ToInt32(textBox1.Text) + ",'" + 
                                    textBox2.Text + "','" + 
                                    textBox4.Text + "'," + 
                                    textBox5.Text + "," + 
                                    textBox6.Text + "," + 
                                    textBox7.Text + "," + 
                                    textBox8.Text + 
                                    "," + textBox3.Text + ")", con); 
    cmd.ExecuteNonQuery();
    MessageBox.Show("Insertion successfully done");
}

3 个答案:

答案 0 :(得分:1)

检查连接字符串和SQL插入语句。

我建议您直接使用sql参数而不是textbox text属性作为值。 因为这是一个常见的漏洞,称为SQL注入。 我还建议使用using语句来确保连接已关闭。

using (var con = new SqlConnection("Data Source=ali-pc/sqlexpress.PakEstateAgency.dbo"))
            {
                con.Open();
                using (var cmd = new SqlCommand("insert into ClientINFO(Application#,LDAReg#,Size,Name,SDW/O,CNIC,Address,Image,giventime)" + "values (@Application#,@LDAReg#, ... )", con))
                {
                    cmd.Parameters.AddWithValue("@Application#", Convert.ToInt32(textBox1.Text));
                    cmd.Parameters.AddWithValue("@LDAReg#", textBox2.Text);
                    // add the other parameters ...

                    cmd.ExecuteNonQuery();
                }
            }

            MessageBox.Show("Insertion successfully done");

答案 1 :(得分:0)

如果您正在使用datatbase执行事务

,请始终将代码放在try... catch块中

如果您建立了数据库连接并且没有问题那么

您在最后五个文本框中缺少单引号。我想最后五列在ur datatbse

中的类型为nvarchar

将命令更改为

SqlCommand cmd = new SqlCommand("insert into ClientINFO(Application#,LDAReg#,Size,Name,SDW/O,CNIC,Address,Image,giventime) values (" + Convert.ToInt32(textBox1.Text) + ",'" + textBox2.Text + "','" + textBox4.Text + " ','" + textBox5.Text + "','" + textBox6.Text+ "','" +textBox7.Text+ "','"+textBox8.Text +"','"+textBox3.Text+"')", con);

答案 2 :(得分:0)

您的SqlConnection存在问题

确保您的连接字符串正确

SqlConnection con = new SqlConnection("Data Source=ali-pc/sqlexpress.PakEstateAgency.dbo");

它应该像

 SqlConnection con = new SqlConnection("Data Source=ADMIN3-PC;Initial Catalog=master;Integrated Security=True");