无法使用C#写入SQL Server;未产生任何错误,但未向表中写入任何内容

无法使用C#写入SQL Server;未产生任何错误,但未向表中写入任何内容,c#,sql-server,C#,Sql Server,经过几个小时的研究,没有找到解决方案,我现在请求帮助。我不是一个巫师;我们将非常感谢您在这方面的知识和见解。我的目标是在每次页面加载时写入对审核日志的访问尝试 我已验证连接字符串的服务器\实例、数据库、用户和密码 我已经使用从连接字符串复制/粘贴的凭据从另一台服务器进行了链接服务器测试,测试成功 我已经在SSMS中验证了查询 SQL Server探查器甚至没有注册连接到数据库的尝试 我的代码: 使用系统; 使用系统数据; 使用System.Data.SqlClient; Net系统; 使用Sys

经过几个小时的研究,没有找到解决方案,我现在请求帮助。我不是一个巫师;我们将非常感谢您在这方面的知识和见解。我的目标是在每次页面加载时写入对审核日志的访问尝试

  • 我已验证连接字符串的服务器\实例、数据库、用户和密码
  • 我已经使用从连接字符串复制/粘贴的凭据从另一台服务器进行了链接服务器测试,测试成功
  • 我已经在SSMS中验证了查询
  • SQL Server探查器甚至没有注册连接到数据库的尝试
  • 我的代码:

    使用系统;
    使用系统数据;
    使用System.Data.SqlClient;
    Net系统;
    使用System.Web;
    名称空间
    {
    公共部分课程网站:System.Web.UI.MasterPage
    {
    公共字符串string1=“”;
    公共字符串string2=“”;
    公共字符串string3=“”;
    受保护的无效页面加载(对象发送方、事件参数e)
    {
    string1=DateTime.Now.ToString(“yyyyMMdd_”)+Guid.NewGuid().ToString().Substring(1,5);
    string2=HttpContext.Current.Request.LogonUserIdentity.Name.ToLower();
    string3=HttpContext.Current.Request.Url.ToString();
    //定义SQL连接字符串和查询
    字符串连接字符串=
    “服务器=服务器\\实例;”+
    “数据库=DB;”+
    “用户Id=用户;”+
    “密码=PSWD;”;
    字符串查询字符串=
    插入dbo.TABLE([col1]、[col2]、[col3])+
    “值(@val1、@val2、@val3)”;
    //写入数据库
    使用(SqlConnection conn=newsqlconnection(connString))
    {
    使用(SqlCommand cmd=newsqlcommand(queryString,conn))
    {
    cmd.Parameters.Add(“@val1”,SqlDbType.NVarChar,100)。Value=string1;
    cmd.Parameters.Add(“@val2”,SqlDbType.NVarChar,100)。Value=string2;
    cmd.Parameters.Add(“@val3”,SqlDbType.NVarChar,100)。Value=string3;
    conn.Open();
    }
    //康涅狄格州关闭();
    }
    }
    }
    }
    
    您没有执行查询

    using(SqlConnection conn = new SqlConnection(constr)){
    conn.open();
       using(SqlCommand cmd = new SqlCommand(queryString, conn)){
          cmd.Parameters.AddWithValue("@val1", string1);
          cmd.Parameters.AddWithValue("@val2", string2);
          cmd.Parameters.AddWithValue("@val3", string3);
    
          cmd.ExeucuteNonQuery();
       }
    }
    

    您必须执行查询。您正在创建连接、打开连接、创建命令。。。。但你从来没有真正执行过这个命令!难怪您在SQL Server Profiler中看不到任何内容—也没有什么可看的!在
    连接打开()之后
    ,您需要有一个
    cmd.ExecuteNonQuery()实际将命令发送到SQL Server并运行它……我意识到您在C#land才刚刚起步,但在C#中手工制作SQL并不是一个好主意。像Linq这样的技术和像EntityFramework这样的包抽象掉了所有困难的事情,比如创建SQL、创建连接/命令等等。它也可能防止您犯这个错误。只要说一句。如果你不执行代码,你希望它如何出现在你的数据库中?你应该避免,特别是在字符串方面。@Voxum哦,这当然有帮助!新手错误。@LarsTech我还遇到一篇文章,我不应该使用AddWithValue,因为它调用隐式转换。我是否正确理解这种担忧?我已经转换为Parameters.Add()。@Bryan_uu\T:这可能会导致隐式转换——有时,对参数的数据类型的猜测可能会完全错误,并导致各种各样的麻烦。如果可能的话,尽量避免使用它-有更好的替代方法,我不知道使用AddWithValue进行隐式转换。我以后会留意的!