目前我正在尝试创建一个日历并尝试通过本地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.
}
%>
答案 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();
}