如何将项添加到本地SQL数据库?

时间:2015-11-06 07:59:50

标签: c# sql-server


目前我正在尝试创建一个日历并尝试通过本地SQL数据库使用表。当我看到如何选择和创建新的数据库和表时,我无法插入任何内容。我已经搜索过,我见过的大部分内容都使用SqlConnection,但是,如果我尝试使用它不能识别名称空间,并且尝试使用using--命令并没有产生太多结果。

现在这是我的代码,包括用户输入数据的表单,我尝试将数据推送到数据库中:

<h3>Set a reminder/event</h3>


        <% string setReminderValue = Request.QueryString["setReminder"]; %>
        <!-- Takes the ID of the date that the user selects above (setReminder), converts it and allows the form to use it further as the name of eventId. -->

        <form method="POST" action="WebForm1.aspx"> 
            <input type="hidden" name="eventId" value="<%= setReminderValue %>" />
            Event name: <input type="text" name="reminderName" /> <br />
            <input type="submit" name="submitReminder" value="Set"> <br /> 

        </form>            


    <% 

        }

        var submitReminder = Request["submitReminder"];
        var reminderName = Request["reminderName"];
        var eventId = Request["eventId"];



        if (submitReminder != null)
        { 

            var cmd = "INSERT INTO CalendarData(Day, Text) VALUES('eventId' , 'reminderName')";
// Currently with no functionality, but how to execute it is outside my knowledge range, which isn't very large at all, yet.

        }
         %>

3 个答案:

答案 0 :(得分:0)

尝试按照以下方式执行命令:

        SqlConnection conn = new SqlConnection("Server=localhost; Database=YOURDATABASENAME;UserId=YOURLOGINNAME;Password=YOURPASSWORD;");
        SqlCommand comm = new SqlCommand("YOUR CMD STRING");
        int affectedRows = comm.ExecuteNonQuery();

答案 1 :(得分:0)

对于使用sql客户端,您需要使用:System.Data.SqlClient。另一个选择是右键单击SqlConnection并使用更改并使用那里插入使用(sry不是工作室的英文版本,因此不确定英文中的确切名称是什么)。除此之外的用法是:

using(SqlConnection connection = new SqlConnection(myConnectionString))
{
    connection.Open();
    string sql =  "INSERT INTO CalendarData(Day, Text) VALUES(@param1,@param2)";
        SqlCommand cmd = new SqlCommand(sql,connection);
        cmd.Parameters.Add("@param1", SqlDbType.Varchar, 50).value = eventId;
        cmd.Parameters.Add("@param2", SqlDbType.Varchar, 50).value = reminderName;
        cmd.CommandType = CommandType.Text;
        cmd.ExecuteNonQuery();

    connection.Close();
}

这是做什么的?使用确保变量在之后被处理掉,并且还应该关闭连接(尽管我个人倾向于写connection.Close(),不管我过去有几个奇怪的情况)。

然后设置命令文本并执行非查询(非查询,因为您不想要结果但是插入)。

@param是占位符,然后你可以通过说cmd.Parameters.Add来定义它们的真正含义。这有助于避免sql注入,因为添加的参数会适当地转换值,因此sql注入不是问题。

myconnectionString您需要了解程序如何连接到您的服务器(您必须查找适当的字符串以了解您需要连接的方式,因为它们包含连接所需的所有信息,因此是系统特定的)

答案 2 :(得分:0)

看起来没有提供你最后的sql语句。

String query = "INSERT INTO dbo.CalendarData(Day, Text) VALUES (@eventId, @reminderName)";
using(SqlConnection connection = new SqlConnection(connectionString))
using(SqlCommand command = new SqlCommand(query, connection))
{
    //a shorter syntax to adding parameters
    command.Parameters.AddWithValue("@eventId", 1);

    command.Parameters.Add("@reminderName", "abc");

    //make sure you open and close(after executing) the connection
    connection.Open();
    command.ExecuteNonQuery();
    connection.Close();
}