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.Sql;
using System.Data.SqlClient;
namespace todoassignment1
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label1.Visible = false;
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
string valueUser = txtUsername.Text;
SqlConnection db = new SqlConnection(SqlDataSource1.ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.Text;
//User is the name of the table, UserName is the column
cmd.CommandText = "INSERT User (UserName) VALUES ('" + valueUser + "')";
cmd.Connection = db;
db.Open();
try
{
cmd.Connection.Open();
cmd.ExecuteNonQuery();
Label1.Text = "Success writing into database!";
Label1.Visible = true;
}
catch (Exception ex)
{
Label1.Text = "Error writing into database.";
Console.WriteLine(ex.Message);
Label1.Visible = true;
}
finally
{
db.Close();
}
}
}
}
Я добавил SqlDataSource1 на странице Default.aspx, что, кажется, было сделано успешно, так как я вижу имена столбцов таблицы User в виде сетки.Таблица пуста, и все, что я пытаюсь сделать, это взять ввод в текстовое поле и отправить его в столбец UserName.Я не очень хорош в отладке, но я заметил несколько ошибок, которые я потратил на изучение часов.Вещи, которые я пробовал:
- SQL SMS> инструменты> параметры> конструкторы> ПРОВЕРЬТЕ сохранение изменений, которые требуют пересоздания таблицы
- Добавлено с использованием System.Data;
- Добавлен cmd.Connection.Open ();
- Добавлено исключение, которое должно быть перехвачено в операторе catch
- Воссоздание всей базы данных
- Четвертая проверка правильности таких вещей, как txtUsernameID текстового поля
- Переконфигурировать SqlDataSource1 снова и снова, удалить и воссоздать
- Подтвердить, что connectionString в web.config является верным
Создать новый SQLConnection с точной строкойв web.config
SqlConnection db = new SqlConnection("Data Source=NAME-PC\\SQLEXPRESS;Initial Catalog=Assignment;Integrated Security=True");
Изменена строка вставки с конкатенации на просто "INSERT User (UserName) VALUES ('asdf')" для упрощения кода, все еще не работает.
Пробовал другой синтаксис
cmd.CommandText = "INSERT INTO User (UserName) VALUES (@username)";
cmd.Parameters.Add("@username", SqlDbType.NVarChar, 50);
cmd.Parameters["@username"].Value = txtUsername.Text.ToString();
Подсказки от отладчика:
Пожалуйста, помогите.