数据写不进数据库是什么原因

时间:2021-09-14 04:32:41
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

public partial class 注册页面 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {

      
        if (TextBox1.Text == "" || TextBox2.Text == "" || TextBox3.Text == "" || TextBox4.Text == "")
        {
            Label1.Text = "注册信息没有填写完整";
        }

        else
        {
            Response.Redirect("Default.aspx");
        }
        string ConnectionStr, insertStr;

        //连接字符串
        ConnectionStr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\360DATA\重要数据\我的文档\VISUAL STUDIO 2008\期末作业\APP_DATA\用户信息.MDF;
        Integrated Security=True;Connect Timeout=30;User Instance=True";
        //创建连接对象
        SqlConnection sqlCon = new SqlConnection(ConnectionStr);


        //建立插入命令字符串
        insertStr = "INSERT INTO 注册信息保存 ([username],[password],[email]) VALUES (@username,@password,@email)";
        try
        {

            //打开数据
            sqlCon.Open();
            if (sqlCon.State == ConnectionState.Open)
            {   
                //创建命令对象
                SqlCommand sqlComm = new SqlCommand(insertStr, sqlCon);
                sqlComm.Parameters.AddWithValue("@username", TextBox1.Text);
                sqlComm.Parameters.AddWithValue("@password", TextBox2.Text);
                sqlComm.Parameters.AddWithValue("@email", TextBox4.Text);
                sqlComm.ExecuteNonQuery();

            }
        }
        catch (SqlException exp)
        {
            Response.Write(exp.ToString());
        }  
        finally
        {
            //关闭数据库
            sqlCon.Close();
        }
      
    }

}

9 个解决方案

#1


System.Data.SqlClient.SqlException: 对象名 '注册信息保存' 无效。 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) 在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) 在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) 在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 在 注册页面.Button1_Click(Object sender, EventArgs e) 位置 d:\360data\重要数据\我的文档\Visual Studio 2008\期末作业\注册页面.aspx.cs:行号 57



错误信息

#2


去掉try catch finally,看看有没有出错。

#3


System.Data.SqlClient.SqlException: 对象名 '注册信息保存' 无效。 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) 在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) 在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) 在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 在 注册页面.Button1_Click(Object sender, EventArgs e) 位置 d:\360data\重要数据\我的文档\Visual Studio 2008\期末作业\注册页面.aspx.cs:行号 57

#4


。。。中文表名。。。
很显示,不存在表名为 注册信息保存 的表

#5


引用 3 楼  的回复:
System.Data.SqlClient.SqlException: 对象名 '注册信息保存' 无效。 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 在 System.Data.SqlClient.SqlInternalConnection.OnErr……

你有数据库里面有“注册信息保存”这个表吗?有的话,改成下面的试试
 insertStr = "INSERT INTO [注册信息保存]([username],[password],[email]) VALUES (@username,@password,@email)";

#6


为什么要中文做表名?

#7


引用 4 楼  的回复:
。。。中文表名。。。
很显示,不存在表名为 注册信息保存 的表
好吧,我水了,纠结一上午拼命改代码,我把数据库删了重新写了个,所以表名自己换了也不知道。

#8


谢谢各位了,不知道是不是把try catch finally去掉的原因,终于弄好了。给分

#9


    protected void Button1_Click(object sender, EventArgs e)
    {

      
        if (TextBox1.Text == "" || TextBox2.Text == "" || TextBox3.Text == "" || TextBox4.Text == "")
        {
            Label1.Text = "注册信息没有填写完整";
        }

        string ConnectionStr, insertStr;

        //连接字符串
        ConnectionStr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\360DATA\重要数据\我的文档\VISUAL STUDIO 2008\期末作业\APP_DATA\用户信息.MDF;
        Integrated Security=True;Connect Timeout=30;User Instance=True";
        //创建连接对象
        SqlConnection sqlCon = new SqlConnection(ConnectionStr);


        //建立插入命令字符串
        insertStr = "INSERT INTO 用户信息保存 ([username],[password],[email]) VALUES (@username,@password,@email)";


            //打开数据
            sqlCon.Open();
            if (sqlCon.State == ConnectionState.Open)
            {   
                //创建命令对象
                SqlCommand sqlComm = new SqlCommand(insertStr, sqlCon);
                sqlComm.Parameters.AddWithValue("@username", TextBox1.Text);
                sqlComm.Parameters.AddWithValue("@password", TextBox2.Text);
                sqlComm.Parameters.AddWithValue("@email", TextBox4.Text);
                sqlComm.ExecuteNonQuery();

            }
        
            //关闭数据库
            sqlCon.Close();
            if (sqlCon.State != ConnectionState.Open) 
            {
                Response.Redirect("Default.aspx");
            }


真心累啊,原来是条件语句导致数据存不进去,果然跟我最初想的一样,我把else去掉了终于解决了,哈哈。

#1


System.Data.SqlClient.SqlException: 对象名 '注册信息保存' 无效。 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) 在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) 在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) 在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 在 注册页面.Button1_Click(Object sender, EventArgs e) 位置 d:\360data\重要数据\我的文档\Visual Studio 2008\期末作业\注册页面.aspx.cs:行号 57



错误信息

#2


去掉try catch finally,看看有没有出错。

#3


System.Data.SqlClient.SqlException: 对象名 '注册信息保存' 无效。 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) 在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) 在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) 在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 在 注册页面.Button1_Click(Object sender, EventArgs e) 位置 d:\360data\重要数据\我的文档\Visual Studio 2008\期末作业\注册页面.aspx.cs:行号 57

#4


。。。中文表名。。。
很显示,不存在表名为 注册信息保存 的表

#5


引用 3 楼  的回复:
System.Data.SqlClient.SqlException: 对象名 '注册信息保存' 无效。 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 在 System.Data.SqlClient.SqlInternalConnection.OnErr……

你有数据库里面有“注册信息保存”这个表吗?有的话,改成下面的试试
 insertStr = "INSERT INTO [注册信息保存]([username],[password],[email]) VALUES (@username,@password,@email)";

#6


为什么要中文做表名?

#7


引用 4 楼  的回复:
。。。中文表名。。。
很显示,不存在表名为 注册信息保存 的表
好吧,我水了,纠结一上午拼命改代码,我把数据库删了重新写了个,所以表名自己换了也不知道。

#8


谢谢各位了,不知道是不是把try catch finally去掉的原因,终于弄好了。给分

#9


    protected void Button1_Click(object sender, EventArgs e)
    {

      
        if (TextBox1.Text == "" || TextBox2.Text == "" || TextBox3.Text == "" || TextBox4.Text == "")
        {
            Label1.Text = "注册信息没有填写完整";
        }

        string ConnectionStr, insertStr;

        //连接字符串
        ConnectionStr = @"Data Source=.\SQLEXPRESS;AttachDbFilename=D:\360DATA\重要数据\我的文档\VISUAL STUDIO 2008\期末作业\APP_DATA\用户信息.MDF;
        Integrated Security=True;Connect Timeout=30;User Instance=True";
        //创建连接对象
        SqlConnection sqlCon = new SqlConnection(ConnectionStr);


        //建立插入命令字符串
        insertStr = "INSERT INTO 用户信息保存 ([username],[password],[email]) VALUES (@username,@password,@email)";


            //打开数据
            sqlCon.Open();
            if (sqlCon.State == ConnectionState.Open)
            {   
                //创建命令对象
                SqlCommand sqlComm = new SqlCommand(insertStr, sqlCon);
                sqlComm.Parameters.AddWithValue("@username", TextBox1.Text);
                sqlComm.Parameters.AddWithValue("@password", TextBox2.Text);
                sqlComm.Parameters.AddWithValue("@email", TextBox4.Text);
                sqlComm.ExecuteNonQuery();

            }
        
            //关闭数据库
            sqlCon.Close();
            if (sqlCon.State != ConnectionState.Open) 
            {
                Response.Redirect("Default.aspx");
            }


真心累啊,原来是条件语句导致数据存不进去,果然跟我最初想的一样,我把else去掉了终于解决了,哈哈。