Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 连接到ASP.Net中的自定义数据库_C#_Asp.net - Fatal编程技术网

C# 连接到ASP.Net中的自定义数据库

C# 连接到ASP.Net中的自定义数据库,c#,asp.net,C#,Asp.net,我正在尝试创建一个小应用程序,其中用户提交个人信息,数据保存在Access数据库中 返回的错误没有任何意义,因为我正在尝试向表中插入正确数量的值 价值观包括第一、最后、年龄和性别 这是我的代码,后面是我按下提交按钮时得到的错误 谢谢你的帮助 <pre> <%@ Page Language="C#" %> <%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.OleD

我正在尝试创建一个小应用程序,其中用户提交个人信息,数据保存在Access数据库中

返回的错误没有任何意义,因为我正在尝试向表中插入正确数量的值

价值观包括第一、最后、年龄和性别

这是我的代码,后面是我按下提交按钮时得到的错误

谢谢你的帮助

<pre>
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>

<script runat="server">
public void btnSubmit_Click(object sender, EventArgs e)
{
    // Create and configure connection string.
    OleDbConnection c = new OleDbConnection();
    c.ConnectionString = 
        "Provider=Microsoft.ACE.OLEDB.12.0;" +
        "Data Source=d:/ectserver/gnicolai/Database/application.accdb;";

    // Open connection.
    c.Open();

    // Get data from textboxes.
    string last = txtLastName.Text;
    string first = txtFirstName.Text;
    string gender = txtGender.Text;
    int  age = int.Parse(txtAge.Text);

    // Compose SQL command string.
    string sql = "INSERT INTO Applicant VALUES"  + 
        "('" + last + "', '" + first + 
        "', '" + gender + "',"  + age + ");";

    // Show SQL insert statement.
    litMessage.Text = 
        "Data submitted with SQL query string<br />" + sql;

    // Create command object and execute insert statement.
    OleDbCommand command = new OleDbCommand(sql, c);
    command.ExecuteNonQuery();

    // Close connection.
    c.Close();
}
</script>

<html>

<head>
<title>grocery-display3.aspx Example</title>
<link rel="stylesheet" class="text/css" 
                       href="../examples.css" />
<style type="text/css">
td  { padding-left:0.15cm;
      padding-right:0.15cm;
      padding-top:0.15cm;
      padding-bottom:0.15cm; }
</style>
</head>

<body>

<h2>PersonInfo3 Example</h2>

<p>Submit age, gender, and age for a person; 
     store this information in a database.
     Retrieve this data with the ViewPersons page. </p>

<form id="frmSelect" runat="server">

<table>
<tr> 
    <td class="r">Last Name</td>
    <td><asp:TextBox ID="txtFirstName" runat="server" 
            CssClass="ctrl" /></td>
</tr>
<tr> 
    <td class="r">First Name</td>
    <td><asp:TextBox ID="txtLastName" runat="server" 
            CssClass="ctrl" /></td>
</tr>
<tr> 
    <td class="r">Gender</td>
    <td><asp:TextBox ID="txtGender" runat="server"
            CssClass="ctrl"  /></td>
</tr>
<tr> 
    <td class="r">Age</td>
    <td><asp:TextBox ID="txtAge" runat="server" 
            CssClass="ctrl" /></td>    
</tr>
<tr> 
    <td> </td>
    <td><asp:Button ID="btnSubmit" runat="server"
            Text="Submit" CssClass="ctrl" Width="128px"
            OnClick="btnSubmit_Click" /></td>
</tr>
</table>

<p><asp:RangeValidator ID="RangeValidator1" Type="Integer" runat="server" 
      ControlToValidate="txtAge" Display="Static" MinimumValue="0" 
      MaximumValue="130" ErrorMessage="Age must be between 0 and 130" /></p>

<p><asp:Literal ID="litMessage" runat="server" /></p>
</form>

</body>
</html>         

</pre>


<strong>Error</strong>

<pre>
Server Error in '/' Application.

Number of query values and destination fields are not the same.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.OleDb.OleDbException: Number of query values and destination fields are not the same.

Source Error: 


Line 32:     // Create command object and execute insert statement.
Line 33:     OleDbCommand command = new OleDbCommand(sql, c);
Line 34:     command.ExecuteNonQuery();
Line 35:         
Line 36:     // Close connection.

Source File: d:\DePaul\Winter 2012\IT 330\Projects\Proj5-Nicolaides\Proj5-Nicolaides\Default.aspx    Line: 34 

Stack Trace: 


[OleDbException (0x80004005): Number of query values and destination fields are not the same.]
   System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr) +992124
   System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +255
   System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +188
   System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +58
   System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +161
   System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +113
   ASP.default_aspx.btnSubmit_Click(Object sender, EventArgs e) in d:\DePaul\Winter 2012\IT 330\Projects\Proj5-Nicolaides\Proj5-Nicolaides\Default.aspx:34
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565


</pre>

public void btnSubmit\u单击(对象发送者,事件参数e)
{
//创建和配置连接字符串。
OleDbConnection c=新的OleDbConnection();
c、 连接字符串=
“Provider=Microsoft.ACE.OLEDB.12.0;”+
“数据源=d:/ectserver/gnicolai/Database/application.accdb;”;
//打开连接。
c、 Open();
//从文本框中获取数据。
字符串last=txtLastName.Text;
string first=txtFirstName.Text;
字符串性别=txtGender.Text;
int age=int.Parse(txtAge.Text);
//编写SQL命令字符串。
字符串sql=“插入申请者值”+
“(“+last+”,“+first+
“、”、“+性别+”、“+年龄+”;
//显示SQL插入语句。
litMessage.Text=
“使用SQL查询字符串提交的数据
”+SQL; //创建命令对象并执行insert语句。 OleDbCommand命令=新的OleDbCommand(sql,c); command.ExecuteNonQuery(); //密切联系。 c、 Close(); } screery-display3.aspx示例 左:0.15厘米; 右侧填充:0.15cm; 垫面:0.15cm; 垫底:0.15cm;} PersonInfo 3示例 提交一个人的年龄、性别和年龄; 将此信息存储在数据库中。 使用ViewPersons页面检索此数据

姓 名字 性别 年龄  

错误 “/”应用程序中出现服务器错误。 查询值和目标字段的数量不相同。 描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源。 异常详细信息:System.Data.OleDb.OLEDBEException:查询值和目标字段的数目不相同。 源错误: 第32行://创建命令对象并执行insert语句。 第33行:OleDbCommand命令=新的OleDbCommand(sql,c); 第34行:command.ExecuteNonQuery(); 第35行: 第36行://关闭连接。 源文件:d:\DePaul\Winter 2012\IT 330\Projects\Proj5 Nicolaides\Proj5 Nicolaides\Default.aspx行:34 堆栈跟踪: [OLEDBEException(0x80004005):查询值和目标字段的数量不相同。] System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)+992124 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams,Object&ExecuteSult)+255 System.Data.OleDb.OleDbCommand.ExecuteCommandText(对象和执行结果)+188 System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior,Object&executeResult)+58 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior,String方法)+161 System.Data.OleDb.OleDbCommand.ExecuteNonQuery()+113 ASP.default\u aspx.btnSubmit\u在d:\DePaul\Winter 2012\IT 330\Projects\Proj5 Nicolaides\Proj5 Nicolaides\default.aspx中单击(对象发送方,事件参数e)提交 System.Web.UI.WebControls.Button.OnClick(EventArgs e)+111 System.Web.UI.WebControl.Button.RaisePostBackEvent(String eventArgument)+110 System.Web.UI.WebControl.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)+10 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument)+13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)+36 System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)+1565
您可能需要明确指定要在表中填充的列。您要插入的列的名称是什么

尝试将代码更改为:


将LastName等列名替换为您的列名。

您可能需要明确指定要在表中填充的列。您要插入的列的名称是什么

尝试将代码更改为:


将LastName等列名替换为您的列名。

最可能的问题是您的表定义有4列以上。您需要为额外的列提供一个默认的插入值(如果db支持),或者更改插入代码以匹配


还值得指出的是,这段代码容易受到sql注入攻击。您不应该构建这样的sql语句并直接向数据库提供数据。相反,将其转换为sql参数,然后发送。

最可能的问题是表定义有4列以上。您需要为额外的列提供一个默认的插入值(如果db支持),或者更改插入代码以匹配


还值得指出的是,这段代码容易受到sql注入攻击。您不应该构建这样的sql语句并直接向数据库提供数据。而是将其转换为sql参数,然后发送。

数据库表上的ID字段与insert语句混淆。在设计视图中查看表后,我删除了“ID”字段,我的insert语句正常工作。

数据库表上的ID字段与我的insert语句发生了冲突。在“设计”视图中查看表后,我删除了“ID”字段,我的insert语句正常工作。

我知道它会受到攻击,但不会以这种方式发布。把这看作是一份草稿。我以前从未做过这样的事
string sql = "INSERT INTO Applicant" +
    "(LastName, FirstName, Gender, Age)" +
    "VALUES"  + 
    "('" + last + "', '" + first + 
    "', '" + gender + "',"  + age + ");";