首页 > 解决方案 > 我没有错误,但我无法在数据库中插入值,

问题描述

我正在尝试从我创建的值中获取值,并且代码在任何地方都没有显示任何错误,但是插入不起作用,值没有进入数据库。我并没有真正理解很多技术术语,因为我刚刚开始学习这个。

我的连接字符串代码

<add name="student_info" connectionString="Data Source=DESKTOP-GH4DT15\MSSQLSERVER01;Initial Catalog=RDO Student info; Integrated Security=True;"/>

这是我的插入代码

public bool insert (SchoolClass c)
{
    bool isSuccess = false;
    
    SqlConnection conn = new SqlConnection(mydbconnection);
    DataTable dt = new DataTable();
    try
    {
        string sql = "INSERT INTO student_info (schoolCode, shoolName, schoolOperater, district, taluka, uc, village, nearFamousPlace, studentName, GR, fatherName, CNIC, religion, gender, DOB_date, DOB_month, DOB_year, Address, DOA_date, DOA_month, DOA_year, classAdmitted, currentClass, section, sift, lastSchool, reasonToLeave, parentContact, emergency, DOS_date, DOS_month, DOS_year ) VALUES (@schoolCode, @shoolName, @schoolOperater, @district, @taluka, @uc, @village, @nearFamousPlace, @studentName, @GR, @fatherName, @CNIC, @religion, @gender, @DOB_date, @DOB_month, @DOB_year, @Address, @DOA_date, @DOA_month, @DOA_year, @classAdmitted, @currentClass, @section, @sift, @lastSchool, @reasonToLeave, @parentContact, @emergency, @DOS_date, @DOS_month, @DOS_year)";
        SqlCommand cmd = new SqlCommand(sql, conn);
        conn.Open();
        cmd.Parameters.AddWithValue("@schoolCode", c.schoolCode);
        cmd.Parameters.AddWithValue("@schoolName", c.schoolName);
        cmd.Parameters.AddWithValue("@schoolOperator", c.schoolOperator);
        cmd.Parameters.AddWithValue("@district", c.district);
        cmd.Parameters.AddWithValue("@taluka", c.taluka);
        cmd.Parameters.AddWithValue("@uc", c.uc);
        cmd.Parameters.AddWithValue("@village", c.village);
        cmd.Parameters.AddWithValue("@nearFamousPlace", c.nearFamousPlace);
        cmd.Parameters.AddWithValue("@studentName", c.studentName);
        cmd.Parameters.AddWithValue("@GR", c.GR);
        cmd.Parameters.AddWithValue("@fatherName", c.fatherName);
        cmd.Parameters.AddWithValue("@CNIC", c.CNIC);
        cmd.Parameters.AddWithValue("@religion", c.religion);
        cmd.Parameters.AddWithValue("@gender", c.gender);
        cmd.Parameters.AddWithValue("@DOB_date", c.dob_day);
        cmd.Parameters.AddWithValue("@DOB_month", c.dob_month);
        cmd.Parameters.AddWithValue("@DOB_year", c.dob_year);
        cmd.Parameters.AddWithValue("@Address", c.adress);
        cmd.Parameters.AddWithValue("@DOA_date", c.doa_day);
        cmd.Parameters.AddWithValue("@DOA_month", c.doa_month);
        cmd.Parameters.AddWithValue("@DOA_year", c.doa_year);
        cmd.Parameters.AddWithValue("@classAdmitted", c.classAdmitted);
        cmd.Parameters.AddWithValue("@currentClass", c.currentCalss);
        cmd.Parameters.AddWithValue("@section", c.Section);
        cmd.Parameters.AddWithValue("@shift", c.Sift);
        cmd.Parameters.AddWithValue("@lastSchool", c.lastSchool);
        cmd.Parameters.AddWithValue("@reasonToLeave", c.reasonToLeave);
        cmd.Parameters.AddWithValue("@parentContact", c.parentContact);
        cmd.Parameters.AddWithValue("@emergency", c.emergencyContact);
        cmd.Parameters.AddWithValue("@DOA_date", c.dos_day);
        cmd.Parameters.AddWithValue("@DOA_month", c.dos_month);
        cmd.Parameters.AddWithValue("@DOA_year", c.dos_year);
        
        int row = cmd.ExecuteNonQuery();
        //if successful query then vaule is greater then zero
        if (row > 0)
        {
            isSuccess = true;
        }
        else
        {
            isSuccess = false;
        }
    }
    catch (Exception ex)
    {

    }
    finally
    {
        conn.Close();
    }
    return isSuccess;
}

标签: c#sqldatabase

解决方案


您的错误在于您的连接字符串以及您在代码中调用它的方式:

<add name="student_info" connectionString="Data Source=DESKTOP-GH4DT15\MSSQLSERVER01;Initial Catalog=RDO Student info; Integrated Security=True;"/>
  1. 您的连接名称是student_info
  2. 您的数据库名称(初始目录)不应包含空格
  3. 您的数据源可以只是一个句点“。” 前提是您使用的是本地连接而不是远程连接(虽然这是可选的,但可以节省一些击键)

您的调用代码如下所示:

using var cn = new SqlConnection(ConnectionString);
using var cmd = new SqlCommand(
            "INSERT INTO ***student_info*** (SchoolName,ParentContact) VALUES (@SchoolName,@ParentContact);SELECT CAST(scope_identity() AS int);", cn);

笔记:

  1. 您的 sql 连接插入到错误的数据库表中(您可能会在此处遇到错误)

  2. 存储连接字符串的最佳方式是在 app.config 或 appsettings.json 文件中,具体取决于您使用的 .NET 版本以及代码中的调用方式,如下所示:

    string connectionString = ConfigurationManager.ConnectionStrings["student_info"].ConnectionString;
    

推荐阅读