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