【发布时间】:2014-01-25 01:35:05
【问题描述】:
之前我发布了这段代码,但它更加混乱,部分被注释掉了,我使用连接插入到数据库中。我被告知要清理它,挑战使用参数,并提出更简洁的问题。话虽如此,与数据库的连接是通过带有一些直接命令的大部分伪代码提供给我的。
1) 我的 Try-Catch 设置是否正确?
2) "server = LOCALHOST" 下划线为红色,表示无法将 'string' 转换为 System.Data.SqlClient.SqlConnection'
3) “Database” 和 “Lab1” 下划线表示它在当前上下文中不存在?这是什么意思?
4) “Trusted_connection”和“yes”与#3 有相同的错误信息。
5) 我不知道在“cmd.Connection =”后面放什么,这就是为什么它被注释掉并且后面有一个问号。
6) 是我的 varname1.Close();在正确的位置?我觉得它实际上放在最后两个右括号之间是有意义的?
7) 在 Catch 中,“SqlException”带有下划线,错误为“找不到类型或命名空间 SqlException”。我在 stackoverflow 上从另一个用户那里找到了一个 try-catch,它提出了这个问题,有人用这样设置的 catch 做出了回应,所以我复制了它。
8) 我正在尝试计算参数,我的设置是否正确?我所拥有的只是 1 个文本框,用户在其中输入数据并将其输入到数组中。 “姓名”是数据库中学生的属性名称,我只是把@Name编成一个变量?我在 stackoverflow 上也从另一个用户那里找到了一个参数示例,并且与我的匹配。
public static int counter = 0;
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 = (?)
cmd.CommandText = "Delete From Student";
cmd.ExecuteNonQuery();
for(int i=0; counter >= i; i++)
{
cmd.CommandText = "INSERT INTO Lines (Name) " + "VALUES (@Name)";
cmd.Parameters.AddWithValue("@Name", studentList[i]);
counter++;
}
varname1.Close();
}
catch (SqlException ex)
{
lbl5.Text = "Connection could not be established";
}
}
【问题讨论】:
标签: c# asp.net sql sql-server try-catch