【问题标题】:Programmatically writing to a database以编程方式写入数据库
【发布时间】:2012-08-16 11:50:42
【问题描述】:

我有一个连接到 SQL Server 的 ASP.Net 网站。在以前的项目 (VB) 中,我使用以下代码写入我的数据库:

Dim connectionString As String = ConfigurationManager.ConnectionStrings("DBConnection").ConnectionString
                Dim insertSql As String = "INSERT INTO tblProfile(UserID, UserName, Title, FirstName, LastName, MiddleName, DateofBirth, Gender, HomePhoneNumber, MobilePhoneNumber, Address, StreetName, StreetType, Suburb, PostCode, State, Country) VALUES(@UserID, @UserName, @Title, @FirstName, @LastName, @MiddleName, @DateofBirth, @Gender, @HomePhoneNumber, @MobilePhoneNumber, @Address, @StreetName, @StreetType, @Suburb, @PostCode, @State, @Country)"

                Using myConnection As New SqlConnection(connectionString)
                    myConnection.Open()
                    Dim myCommand As New SqlCommand(insertSql, myConnection)
                    myCommand.Parameters.AddWithValue("@UserID", newUserGuid)
                    myCommand.Parameters.AddWithValue("@UserName", newUserName)
                    myCommand.Parameters.AddWithValue("@Title", Title.SelectedItem.Text)
                    myCommand.Parameters.AddWithValue("@FirstName", FirstName.Text)
                    myCommand.Parameters.AddWithValue("@LastName", LastName.Text)
                    If MiddleNames.Text = String.Empty Then
                        myCommand.Parameters.AddWithValue("@MiddleName", DBNull.Value)
                    Else
                        myCommand.Parameters.AddWithValue("@MiddleName", MiddleNames.Text)
                    End If
                    DateofBirth.Text = YearofBirth.Text + "-" + MonthofBirth.Text + "-" + DayofBirth.Text
                    myCommand.Parameters.AddWithValue("@DateofBirth", DateofBirth.Text)
                    myCommand.Parameters.AddWithValue("@Gender", Gender.SelectedItem.Text)
                    If HomePhoneNumber.Text = String.Empty Then
                        myCommand.Parameters.AddWithValue("@HomePhoneNumber", DBNull.Value)
                    Else
                        myCommand.Parameters.AddWithValue("@HomePhoneNumber", HomePhoneNumber.Text)
                    End If
                    If MobilePhoneNumber.Text = String.Empty Then
                        myCommand.Parameters.AddWithValue("@MobilePhoneNumber", DBNull.Value)
                    Else
                        myCommand.Parameters.AddWithValue("@MobilePhoneNumber", MobilePhoneNumber.Text)
                    End If
                    myCommand.Parameters.AddWithValue("@Address", AddressNumber.Text)
                    myCommand.Parameters.AddWithValue("@StreetName", StreetName.Text)
                    myCommand.Parameters.AddWithValue("@StreetType", StreetType.SelectedItem.Text)
                    myCommand.Parameters.AddWithValue("@Suburb", Suburb.Text)
                    myCommand.Parameters.AddWithValue("@PostCode", Postcode.Text)
                    myCommand.Parameters.AddWithValue("@State", State.SelectedItem.Text)
                    myCommand.Parameters.AddWithValue("@Country", Country.SelectedItem.Text)

                    myCommand.ExecuteNonQuery()
                    myConnection.Close()
                End Using

我现在已更改为 C#,但在更改此代码时遇到了问题。到目前为止,我有:

String connectionString = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;

String insertSql = "INSERT INTO tbl_UserProfiles VALUES(@UserID, @FirstName, @LastName, @YearOfBirth, @Country)";
SqlCommand myCommand = new SqlCommand(insertSql, connectionString);
myCommand.Parameters.AddWithValue("@UserID", newUserGuid);
myCommand.Parameters.AddWithValue("@FirstName", FirstNameTB.Text);
myCommand.Parameters.AddWithValue("@LastName", LastNameTB.Text);
myCommand.Parameters.AddWithValue("@YearOfBirth", YearDDL.SelectedItem.Text);
myCommand.Parameters.AddWithValue("@Country", CountryDDL.SelectedItem.Text);

try
{
    connectionString.Open();
    myCommand.ExecuteNonQuery();
}

finally
{
    connectionString.Close();
}

在查看了一些教程网站和我自己以前的代码后,我尝试创建它。但是,我相信我在这里做错了:

String connectionString = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;

当我得到弯曲的红色下划线时。

【问题讨论】:

  • “红色下划线”是什么意思?
  • 抱歉:'System.Data.SqlClient.SqlCommand.SqlCommand(string, System.Data.SqlClient.SqlConnection)' 的最佳重载方法匹配有一些无效参数
  • Using myConnection As New SqlConnection(connectionString) 你没有将此行转换为 C#
  • 您仍然可以在连接和命令对象周围使用 Using 语句。
  • 第一个代码是我的旧代码,来自一个旧项目。第二个代码是我这个项目的新代码。

标签: c# asp.net sql-server vb.net vb.net-to-c#


【解决方案1】:

试试这个.... 使用SqlConnection

使用 myConnection 作为新的 SqlConnection(connectionString) 您没有将此行转换为 C#

 String connectionString = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;
 SqlConnection con = new Sqlconnection(connectionString);
            String insertSql = "INSERT INTO tbl_UserProfiles VALUES(@UserID, @FirstName, @LastName, @YearOfBirth, @Country)";
            SqlCommand myCommand = new SqlCommand(insertSql, con);
            myCommand.Parameters.AddWithValue("@UserID", newUserGuid);
            myCommand.Parameters.AddWithValue("@FirstName", FirstNameTB.Text);
            myCommand.Parameters.AddWithValue("@LastName", LastNameTB.Text);
            myCommand.Parameters.AddWithValue("@YearOfBirth", YearDDL.SelectedItem.Text);
            myCommand.Parameters.AddWithValue("@Country", CountryDDL.SelectedItem.Text);

            try
            {
                con.Open();
                myCommand.ExecuteNonQuery();

            }

            finally
            {
                con.Close();
            }

【讨论】:

    【解决方案2】:

    您似乎正在尝试Open() 一个连接字符串:)

    翻译

      Using myConnection As New SqlConnection(connectionString)
                        myConnection.Open()
          Dim myCommand As New SqlCommand(insertSql, myConnection)
    

      using (var myConnection = new SqlConnection(connectionString))
      using (var myCommand = new SqlCommand(insertSql, myConnection))
      {
          myConnection.Open();
          ...
          myCommand.ExecuteNonQuery();
      }
    

    在 C# 中使用 SqlConnectionSqlCommand 将保证在两个对象上调用 Dispose(),无论成功还是失败(以及关闭连接、清理等)

    【讨论】:

      【解决方案3】:

      确保你有

      using System.Configuration 
      

      在文件的顶部。您的 web.config 文件是否还包含配置 > configSections > configSections 部分?

      【讨论】:

      • configSections 部分是否存在有什么关系?
      猜你喜欢
      • 2018-11-27
      • 2010-09-14
      • 2011-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-16
      • 2014-11-14
      • 1970-01-01
      相关资源
      最近更新 更多