【问题标题】:c# program inserting rows in sql databasec#程序在sql数据库中插入行
【发布时间】:2013-08-30 19:04:53
【问题描述】:

我知道我以前做过几次,但我这辈子都不记得怎么做了。 我有一个我创建的数据库,我想制作一个只将信息输入数据库的软件。该程序有效,但我的 sql 连接是问题所在。所以为了测试它,我基本上尝试直接插入硬编码信息,但它仍然不会去。我哪里错了?:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.Common;
    using System.Data.SqlClient;
    using System.Data.Sql;

    namespace InventoryTracker
    {
        public partial class Form1 : Form
        {
          public Form1()
            {
                InitializeComponent();
            }


            public static void CreateCommand()
            {
                SqlConnection myConnection = new SqlConnection("User Id=Jab" + "password=''" + "Data Source=localhost;" + "Trusted_Connection=yes;" + "database=InventoryTracker;" + "Table=Inventory;");

                try
                {
                    myConnection.Open();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.ToString());
                }
                SqlCommand myCommand = new SqlCommand("INSERT INTO Inventory (ItemName, SerialNumber, Model, Department, Quantity, Notes) " + "Values (string,string,string,string, 1, string)", myConnection);

            }
    }
}

提前感谢您! :-)

【问题讨论】:

  • 你遇到了什么错误?
  • 你在哪里执行查询?
  • 您不需要在连接字符串中使用+。而且,除了你,没有人能知道正确的连接字符串。
  • 如果您说它是受信任的连接,我认为您不需要连接字符串中的用户名和密码...受信任的连接告诉 SQL 使用 Windows 身份验证。用户名和密码告诉它使用 SQL 身份验证。

标签: c# .net sql sql-server database


【解决方案1】:

你的 sql 连接字符串搞砸了,你需要在所有参数之间使用分号,你的参数也搞砸了。即,像

"Server=localhost;Database=InventoryTracker;Trusted_Connection=True;"

您正在混合受信任模式并指定用户 ID——受信任的连接意味着使用您的 Windows 登录凭据。

TableName 不在连接字符串中。

此站点非常适合用于连接字符串示例http://www.connectionstrings.com/sql-server-2008

你的 SQL 命令,“INSERT INTO Inventory (ItemName ...”) 也很混乱。应该是这样的

INSERT INTO Inventory (ItemName ...) values(@ItemName ...)

然后你传入类似的值

myCommand.Parameters.Add("ItemName", SqlType.VarChar).Value = "Dozen Eggs";

查看Insert data into SQL Server from C# code 的简单示例

【讨论】:

  • 谢谢大家。所有回复都有帮助
【解决方案2】:

只需使用 SqlConnectionStringBuilder 类。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder.aspx

代替:

"User Id=Jab" + "password=''" + "Data Source=localhost;" + "Trusted_Connection=yes;" + "database=InventoryTracker;" + "Table=Inventory;");

试试:

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.UserID = "Jab";
builder.Password = "";
builder.DataSource = "localhost";
builder.InitialCatalog = "InventoryTracker";

【讨论】:

  • 我从未使用过 SqlConnectionStringBuilder。我的连接字符串一直在配置文件中,因此它不会被编译到应用程序中。但是我以前从未注意到的一个潜在有用的替代方案。 +1
【解决方案3】:
// Don't put table name in your connection string
    string connection_str = "Data Source = localhost ; uid = db_user; pwd = db_pass; database = db_name; ";
     conn = new SqlConnection(connection_str);
     conn.Open();

【讨论】:

    【解决方案4】:

    尝试改变

    "User Id=Jab" + "password=''" + "Data Source=localhost;" + "Trusted_Connection=yes;" + "database=InventoryTracker;" + "Table=Inventory;"
    

    "User Id=Jab; " + "Password=''; " + "Data Source=localhost; " + "Trusted_Connection=yes; " + "Initial Catalog=InventoryTracker;"
    

    (更改大小写,“数据库”为“初始目录”,删除“表”并添加“;”)


    此外,您可能想尝试将“数据源”替换为“服务器”。

    【讨论】:

    • 数据源和服务器是同义词。数据库和初始目录是同义词。连接字符串不区分大小写,但字符串中的密码等均区分大小写。
    【解决方案5】:

    不要忘记调用myCommand.ExecuteNonQuery 让它实际执行您的查询。没有这个,你只是在创建一个命令,而不是运行它。

    【讨论】:

      猜你喜欢
      • 2021-08-24
      • 1970-01-01
      • 1970-01-01
      • 2017-08-22
      • 1970-01-01
      • 1970-01-01
      • 2019-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多