Поместите текст в базу данных SQL Server 2005 - PullRequest
0 голосов
/ 16 июля 2011

У меня есть база данных SQL с 1 таблицей с 3 столбцами .. documentID, documentTitle, documentBody.

У меня есть страница aspx с 2 входами ... 1 для заголовка 1 для тела и 1 кнопка отправки.

Как же я могу просто получить текст внутри полей ввода для сохранения в новой строке в базе данных?Я не могу найти простой ... конкретный ответ, и нет никакого способа, которым это так сложно.

<form id="form1" runat="server">
<div style="width: 800px; margin-top: 40px;">
    <p style="text-align: left">
        Title</p>
    <p>
        <input id="inputTitle" runat="server" type="text" style="width: 100%; padding: 6px;
            font-size: large" /></p>
    <p style="text-align: left">
        Body</p>
    <p>
        <textarea id="inputBody" runat="server" style="width: 100%; height: 400px" cols="22"
            rows="66"></textarea></p>
    <p>
        <input id="save" type="submit" onclick="submit_onclick" value="Save as the newest version" /><span> or
        </span><a href>Cancel</a></p>
</div>
</form>

Ответы [ 2 ]

1 голос
/ 16 июля 2011

Самое простое было бы использовать прямой ADO.NET в обработчике OnClick - но это приводит к спагетти-коду и смешиванию манипуляций с пользовательским интерфейсом (установка и чтение, например, текстовые поля) и кода доступа к данным - который не хороший подход.

Anywhere - здесь используется самый простой подход (опять же: не рекомендуется для реального использования)

 protected void submit_onclick(object sender, EventArgs e)
 {
     string sqlStmt = "INSERT INTO dbo.YourTable(documentTitle, documentBody)  " + 
                      "VALUES(@docTitle, @docBody)";

     string connectionString = WebConfigurationManager.ConnectionStrings["YourConnectionString"].ConnectionString;

     using(SqlConnection conn = new SqlConnection(connectionString))
     using(SqlCommand cmd = new SqlCommand(sqlStmt, conn))
     {
        cmd.Parameters.Add("@docTitle", SqlDbType.VarChar, 100).Value = tbxTitle.Text.Trim();
        cmd.Parameters.Add("@docBody", SqlDbType.VarChar, 100).Value = tbxBody.Text.Trim();

        conn.Open();
        cmd.ExecuteNonQuery();
        conn.Close();
     }
 }

Конечно, использование ORM может упростить задачу с точки зрения программирования (просто "обновите" Document, установите его свойства .Title и .Body и вызовите .Save() для него - или что-то вроде что) - но у этих ORM тоже есть определенная кривая обучения.

Кроме того: если вы хотите заняться простым или средним трудом или только начинаете разработку ASP.NET, почему бы не попробовать Microsoft WebMatrix ? Он содержит множество помощников и «оболочек», которые значительно облегчают работу с типичными задачами, особенно с базой данных!

См. часть 5 вводного руководства по разработке базы данных .

0 голосов
/ 16 июля 2011

Используйте серверные элементы управления ASP.NET для ввода вместо <input>.

 <asp:Button runat="server" Text="Submit" id="sub" OnClick="SaveDetails" />

 <asp:TextBox runat="server" id="txtBody" />
 <asp:TextBox runat="server" id="txtTitle" />

Попробуйте что-то вроде этого в вашем коде:

 protected void SaveDetails(object sender, EventArgs e) {

   using (var conn = new SqlConnection("Data Source=YourServerName;Initial Catalog=YourDatabaseName;Integrated Security=True;"))
   using (var cmd = conn.CreateCommand())
   {
        conn.Open();
        cmd.CommandText = @"INSERT INTO docs (documentTitle, documentBody) 
                            VALUES (@title,@body);"; 
        cmd.Parameters.AddWithValue("@title", txtTitle.Text.Trim());
        cmd.Parameters.AddWithValue("@body", txtBody.Text.Trim());

        cmd.ExecuteNonQuery();        
   }
 }
...