ASP.net error INSERTING INTO SQL table



好吧,我已经到了一个不知道该怎么办的地步,我之前发布过一个问题,结果是以-3的票数结束了这个问题,由于担心再次发生这种情况,我一直在谷歌上搜索,直到崩溃。。。我试过很多代码,每次都会出错。。。

我今天已经创建了大约6/7次数据库,并不断更改连接字符串。。。

我有一个包含3个表的数据库,其中一个表名为Company,现在我想做的是使用两个表示CompName和密码的文本框,以及一个表示业务类型的下拉列表。

我想用这些把信息输入表格,有人能帮我吗

这是我的代码:

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

public partial class CompanyLogin : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
string ConnectionString =     System.Configuration.ConfigurationManager.ConnectionStrings["MyConncetionString"].ConnectionString;
string sql = "INSERT INTO company (CompName, BusinessType, Pword) VALUES('" + txtCompName.Text + "','" + DropDownList1.Text + "', '" + txtPassword + "')";
using (SqlConnection sqlconn = new SqlConnection(ConnectionString))
{
sqlconn.Open();
using (SqlCommand command = new SqlCommand(sql, sqlconn))
{
command.ExecuteNonQuery();
}
}
}
}

错误:

系统。NullReferenceException:对象引用未设置为对象的实例

在线:

string ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MyConncetionString"].ConnectionString;

web.config:

<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="Varsity_College.tempsConnectionString" 
connectionString="Data Source=JAUN-   PCSQLEXPRESS;Initial Catalog=Varsity_College.temps;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
...... (irrelevant) ......
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>

我的错误一直指向

第17行:
string ConnectionString=System。配置ConfigurationManager。ConnectionStrings["MyConnectionString"]。ConnectionString*

您的不匹配

MyConncetionString=>替换为MyConnectionString

你可以使用

cmd.CommandText =  "insert into company(CompName, BusinessType, Pword) Values(@CompName,@BusinessType,@Pword);"
cmd.Parameters.AddWithValue("@CompName", txtCompName.Text);    
cmd.Parameters.AddWithValue("@BusinessType",DropDownList1.Text);    
cmd.Parameters.AddWithValue("@Pword",txtPassword );    
cmd.ExecuteNonQuery();

您正试图将整个密码文本框传递给它。

string sql = "INSERT INTO company (CompName, BusinessType, Pword) VALUES('" +    txtCompName.Text + "','" + DropDownList1.Text + "', '" + txtPassword + "')";

如果使用密码字段,则应为txtPassword.TexttxtPassword.Password

您试图加载的连接字符串似乎不存在。

你在MyConncetionString这里有错别字吗?(也许是MyConnectionString)

web.config中的连接字符串被称为:

<connectionStrings>
<add name="Varsity_College.tempsConnectionString"  ..... />

因此,这行代码显然不会web.config:中找到任何连接字符串

string ConnectionString = ConfigurationManager.ConnectionStrings["MyConncetionString"].ConnectionString;

因此,该表达式为NULL:

ConfigurationManager.ConnectionStrings["MyConncetionString"]

尝试访问该NULL表达式的.ConnectionString属性会导致您看到的错误。

这些名字需要排成一行!

所以用这个来代替:

string ConnectionString = ConfigurationManager.ConnectionStrings["Varsity_College.tempsConnectionString"].ConnectionString;

然后您应该将web.config中定义的连接字符串放入C#代码中!

此外:总是检查可能为空的东西是一个很好的原则,例如:

string ConnectionString = string.Empty;
// get the entry from the config file
var entry = ConfigurationManager.ConnectionStrings["MyConncetionString"];
// **CHECK** if entry is NOT NULL ......
if (entry != null)
{
// only when sure that it's not NULL - **THEN** access the entry....
ConnectionString = entry.ConnectionString;
}

正如我在评论中所说,您需要在web.config中的配置标记中添加ConnectionStrings标记。

<add name="MyConnectionString" connectionString="Data Source=SQLServerNameOrIP;Initial Catalog=DatabaseName;User ID=user;password=****;Network=IDontKnow" providerName="System.Data.SqlClient"/>

一些可能有用(也可能不有用)的参考文献:web.config的asp.net连接字符串示例
如何:从web.config文件读取连接字符串

编辑:
这看起来是一个更好的链接:在Web中存储数据库连接字符串。配置

最新更新