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)
所以,这段代码存在很多问题.最好再花一个小时左右,然后发布你无法弄清楚的任何具体问题.我告诉你一些快速指示.
你有一个catch()块,但匹配try块被注释掉了.这将导致编译器错误.看起来你只是在调试一些东西,所以没什么大不了的.但是,发布您尝试运行的实际代码通常是明智之举.
你正在初始化一个字符串null,但你要连接到最后.这将导致运行时错误.您应该将字符串初始化为String.Empty.另外,StringBuilder如果你正在进行大量的字符串连接,请查看该类,因为它更快.
您(理论上)构建一个SQL字符串,但实际上从未在任何地方运行它.你也没有将价值归还任何能够运行它的东西.
您的INSERT陈述甚至无效.)在INSERT语句中没有匹配的结尾,并且)在变量之后有一个流氓,这将导致编译器错误.您也可以将所有变量混合在一起,它们之间没有引号或逗号.你可能想要更像的东西:
sql += String.Format("INSERT into Student VALUES('{0}', '{1}', '{2}');", StudentId, Name, Address);
使用参数化查询.总是.谁在乎老师的话.如果不这样做,至少首先检查字符串是否有撇号,因为这些会过早地结束字符串而搞砸你的SQL语句.
你的循环似乎没有多大意义.什么是counter1?它有什么价值?即使将其设置为正值,您所做的只是反复构建相同的SQL字符串,因为循环中的值不会更改.目前尚不清楚你在这里要做什么.
你正在调用,varname1.Close();但你已经注释掉了声明varname1,这将导致编译器错误.
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
1126 次 |
| 最近记录: |