使用C#连接并插入SQL Server 2012

Tim*_*Tim 0 c# sql sql-server asp.net visual-studio-2010

我正在编写一些代码来尝试获取用户输入的数组以连接并发送到SQL Server 2012.我被告知使用所有这些命令连接到数据库.

我的一个问题是我一直在浏览Stack Overflow并且每个人都建议使用参数而不是连接以避免SQL注入,但这是我的课程,我们只有2周的时间进入C#所以我不认为他会去喜欢它,如果我使用参数.

我认为我的try catch是错误的,上半部分用红线填充,你如何使用带有for循环的INSERT命令?

protected void btnDisplay_Click(object sender, EventArgs e)
{
    //try
    //{
      //  System.Data.SqlClient.SqlConnection varname1 = new System.Data.SqlClient.SqlConnection();
      //  varname1 = "server = LOCALHOST"; Database = Lab1; Trusted_connection = yes;
      //  varname1.Open();
      //  System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
      //  cmd.Connection = conn;
      //  cmd.CommandText = "Delete From Student";
       // cmd.ExecuteNonQuery();
   //    
    string sql = null;
     for(int i=0; counter1 >= i; i++)
     {
         sql += "INSERT into Student VALUES(" + StudentId + Name + Address);
     }
    varname1.Close();
   //}
    catch (SqlException ex)
    {
        MessageBox.Show("Database failed" + ex.Message);
    }
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*sen 6

所以,这段代码存在很多问题.最好再花一个小时左右,然后发布你无法弄清楚的任何具体问题.我告诉你一些快速指示.

  1. 你有一个catch()块,但匹配try块被注释掉了.这将导致编译器错误.看起来你只是在调试一些东西,所以没什么大不了的.但是,发布您尝试运行的实际代码通常是明智之举.

  2. 你正在初始化一个字符串null,但你要连接到最后.这将导致运行时错误.您应该将字符串初始化为String.Empty.另外,StringBuilder如果你正在进行大量的字符串连接,请查看该类,因为它更快.

  3. 您(理论上)构建一个SQL字符串,但实际上从未在任何地方运行它.你也没有将价值归还任何能够运行它的东西.

  4. 您的INSERT陈述甚至无效.)在INSERT语句中没有匹配的结尾,并且)在变量之后有一个流氓,这将导致编译器错误.您也可以将所有变量混合在一起,它们之间没有引号或逗号.你可能想要更像的东西:

    sql += String.Format("INSERT into Student VALUES('{0}', '{1}', '{2}');", StudentId, Name, Address);

  5. 使用参数化查询.总是.谁在乎老师的话.如果不这样做,至少首先检查字符串是否有撇号,因为这些会过早地结束字符串而搞砸你的SQL语句.

  6. 你的循环似乎没有多大意义.什么是counter1?它有什么价值?即使将其设置为正值,您所做的只是反复构建相同的SQL字符串,因为循环中的值不会更改.目前尚不清楚你在这里要做什么.

  7. 你正在调用,varname1.Close();但你已经注释掉了声明varname1,这将导致编译器错误.

希望这可以帮助!