无法使用asp.net将数据插入sql server

时间:2017-05-11 05:11:46

标签: c# sql-server

这是我将数据插入SQL Server数据库的代码。我已经建立了与SQL Server的连接。但是当我调试我的代码时,文本框会按原样显示,但是当我在其中键入数据,然后单击“提交”时,它不会显示在数据库中。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

public partial class Registration : System.Web.UI.Page
{
    protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection strcon;
        SqlCommand cmd;

        string sqlstr;
        string constr = @"Data Source=HAVINES\SQLEXPRESS;Initial Catalog=UserLoginDatabase;Integrated Security=True";

        strcon = new SqlConnection(constr);
        DataSet ds = new DataSet();
        strcon.Open();

        if (ds.Tables != null && ds.Tables.Count > 0)
        {
            for (int i = 0; i <= ds.Tables[0].Rows.Count - 1; i++)
            {
                sqlstr = "insert into RegisterTable values(";
                sqlstr = sqlstr + "'" + ds.Tables[0].Rows[i][0] + "',";
                sqlstr = sqlstr + "'" + ds.Tables[0].Rows[i][1] + "',";
                sqlstr = sqlstr + "'" + ds.Tables[0].Rows[i][2] + "',";
                sqlstr = sqlstr + "'" + ds.Tables[0].Rows[i][3] + "',";
                sqlstr = sqlstr + "'" + ds.Tables[0].Rows[i][4] + "',";
                sqlstr = sqlstr + "'" + ds.Tables[0].Rows[i][5] + "',";
                sqlstr = sqlstr + "'" + ds.Tables[0].Rows[i][6] + "',";
                sqlstr = sqlstr + "'" + ds.Tables[0].Rows[i][7] + "',";
                sqlstr = sqlstr + "'" + ds.Tables[0].Rows[i][8] + "')";

                cmd = new SqlCommand(sqlstr, strcon);

                try
                {
                    cmd.ExecuteNonQuery();
                }
                catch (Exception)
                {
                }
            }
        }
        else
        {
            // do something when ds.Tables is null or ds.Tables doesn't have any elements
        }

        strcon.Close();
    }
}

3 个答案:

答案 0 :(得分:0)

我认为可以使您的代码更好的一些评论:

  • 如果它只有一个表那么为什么是DataSet?使用DataTable

  • sqlstr上的+ =

  • Using添加到SQLConnection将消除需要调用Con.Close()

  • i <= ds.Tables[0].Rows.Count - 1 ...与i < ds.Tables[0].Rows.Count相同

  • 考虑使用CmdParameters。

来到主要问题...你正在创建一个新的DataSet类空实例并检查它是否为空或者没有尝试用任何东西填充

答案 1 :(得分:0)

好的,你的帖子是编写数据库插入代码的一种特别可怕的方式,原因很多,有些已在你的主帖上发表评论。

请看这个链接: https://msdn.microsoft.com/en-us/library/fxsa23t6.aspx

这是Microsoft关于如何使用数据集正确进行数据访问的一组教程。虽然它的目标是Windows表单用户而不是asp,但原则是相同的,如果您遵循它们,您将为自己的生活做好准备。从创建一个简单的数据应用程序开始,按照它(首先将它作为一个Windows窗体项目,所以你不是想要学习一个新的数据访问策略,同时调整从winforms到webforms的教程),并在15分钟内你'我们知道如何正确地进行数据访问。我向你保证,这将为你今天节省数小时的挫折感,更不用说你的余生了

我接受这不是“这里是如何解决你破碎的解决方案”的答案,这是“你应该如何做到这一点,请扔掉你所做的事情并像这样做”对你来说是个诅咒,但在一年的时间里,你会希望看到你在原帖中写的代码震惊恐怖。

我们都已经完成了,但你真的需要在它变得根深蒂固之前走上正确的道路并且你不愿意改变。按照MS教学的方式做事,你的代码将是3行长,可读,安全,可维护,并且它将起作用。你现在正在进行数据库访问,有一天你将成为其中一个“我更改了URL中的ID号并看到其他人的信用卡详细信息”丑闻,或更糟糕的......

答案 2 :(得分:0)

您正在初始化新数据集

DataSet ds = new DataSet();

这意味着此数据集中没有表格

ds.Tables != null && ds.Tables.Count > 0

此条件将始终返回false并且您的查询将不会被执行

1)始终使用参数化查询,因为您使用的此查询不安全,如果您插入或更新的文本中有单引号(&#39;)将中断执行。

2)您还可以对此click here for bulk update table

使用批量更新