В настоящее время я пишу фрагмент кода, в котором пользователь должен вставить несколько сведений о сотруднике и нажать одну кнопку, чтобы заполнить сетку, а другой - сохранить информацию в gridview в локальной базе данных. Несмотря на то, что я написал до сих пор, существует непротиворечивая ошибка: «SqlExeption был необработанным кодом пользователя. Я пытался его исправить, но безуспешно. Он жалуется на conn.Open();
Сохранение данных из сетки в локальную базу данных в asp.net
Это конкретный фрагмент кода:
protected void SaveButton_Click(object sender, EventArgs e)
{
string StrQuery;
try
{
using (SqlConnection conn = new SqlConnection(@"Data Source = C:\EmployeeWebProject\EmployeeWebProject\App_Data\EmployeeDatabase.sdf"))
{
using (SqlCommand comm = new SqlCommand("SELECT * FROM Employee"))
{
comm.Connection = conn;
conn.Open();
for (int i = 0; i < GridView1.Rows.Count; i++)
{
StrQuery = @"INSERT INTO Employee VALUES ("
+ GridView1.Rows[i].Cells[0].ToString() + ", "
+ GridView1.Rows[i].Cells[1].ToString() + ", "
+ GridView1.Rows[i].Cells[2].ToString() + ", "
+ GridView1.Rows[i].Cells[3].ToString() + ", "
+ GridView1.Rows[i].Cells[4].ToString() + ");";
comm.CommandText = StrQuery;
comm.ExecuteNonQuery();
}
}
}
}
finally
{
}
}
[SQL Injection alert] (http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - вы должны ** не ** объединять свои SQL-запросы - использовать ** параметризованные запросы ** вместо избежания SQL-инъекции –
Вам нужно предоставить больше данных об ошибках - проверьте внутренние исключения, включите полное сообщение об ошибке и т. д. – mason
+10000000 - комментарии @marc_s о SQL-инъекции. Скорее всего, вы получаете сообщение об ошибке, потому что ваш запрос недействителен. Я предполагаю, что у вас есть строковые значения, но у вас нет ни одной кавычки в вашем запросе. Параметрирование этого не только предотвратит уязвимость, но и устранит ошибки. –