2014-06-30 56 views
0

即時通訊使用Microsoft Visual Studio 2012爲平臺SQL表和我創建Web窗體項目 我已創建數據庫文件「SimpleDB.mdf」他的「表」文件夾中,我增加新表稱爲「表」,它有兩列 - 編號和名稱(字符串)。什麼我嘗試是字符串數據插入此表的名稱列,而從JavaScript函數調用服務器端功能。將數據插入使用JavaScript和ASP.NET

這是aspx.cs代碼

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Web.Services; 

namespace ProjectWWW 
{ 
    public partial class WebForm1 : System.Web.UI.Page 
    { 
     [WebMethod] 
     public static string InsertData(string ID){ 
      string source = "Data Source=(LocalDB)\v11.0;Integrated Security=True;Connect Timeout=30"; 
      SqlConnection con = new SqlConnection(source); 
      { 

       SqlCommand cmd = new SqlCommand("Insert into Table(Name) values('" + ID + "')", con); 
       { 
        con.Open(); 
        cmd.ExecuteNonQuery(); 
        return "True"; 
       } 
      } 
     } 
} 

,這是在ASPX代碼

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="ProjectWWW.WebForm1" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <script> 
     function CallMethod() { 
      PageMethods.InsertData("hello", CallSuccess, CallError); 
     } 

     function CallSuccess(res) { 
      alert(res); 
     } 

     function CallError() { 
      alert('Error'); 
     } 
    </script> 
</head> 

    <body> 
     <header>   
     </header>  
     <div class="table" id="div1" > </div>      
     <form id="Form1" runat="server"> 
      <asp:Button id="b1" Text="Submit" runat="server" onclientclick="CallMethod();return false;"/> 
      <asp:ScriptManager enablepagemethods="true" id="ScriptManager1" runat="server"></asp:ScriptManager> 
     </form> 

    </body> 


    </html> 

所以基本上即時通訊期待當按鈕提交點擊表列「名稱」將被填補與「你好」但沒有任何反應,列保持空(NULL)

+0

你的意思是由它保持'Null'?你正在嘗試「更新」一個現有的記錄,或者「插入」一個新的記錄? – Siyual

+0

插入我做了測試與你的代碼,它正在與改變SQL查詢作爲一個新的 –

+0

:「INSERT INTO [表](名稱)VALUES(「」 + ID +「」)」。把try-catch和store結果放到cmd.ExecuteNonQuery();在int變量中,並檢查是否有錯誤。 – GMD

回答

0

Table是T-SQL中的保留字,所以我建議你使用[] squ是括號括起來的Table

試試這個:

SqlCommand cmd = new SqlCommand("Insert into [Table](Name) 
                values('" + ID + "')", con); 

建議:您的查詢是開放的SQL注入attacks.I會建議你使用參數化的查詢,以避免它們。

試試這個:

using(SqlConnection con = new SqlConnection(source)) 
{ 
    using(SqlCommand cmd = new SqlCommand("Insert into [Table](Name) 
                values(@Name)", con)) 
    {    
     con.Open(); 
     cmd.Parameters.AddWithValue("@Name",ID); 
     cmd.ExecuteNonQuery(); 
     return "True"; 
    } 
} 
+0

仍然沒有任何反應 –

+0

功能'功能CallMethod(){ \t PageMethods.InsertData( 「你好」,CallSuccess,CallError); \t}'警報錯誤,爲什麼? –

相關問題