当前位置:编程学习 > C#/ASP.NET >>

从索引 0 处开始,初始化字符串的格式不符合规范。

我添加了一个类coon.cs:

代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.IO;

/// <summary>
/// conn 的摘要说明
/// </summary>
public class conn
{
    
 //声明一个SqlConnection对象
    private SqlConnection con;
    //声明一个SqlCommand对象
    private SqlCommand com;
    //声明一个SqlDataAdapter对象
    private SqlDataAdapter sqldata;   

public conn()
{
        

        //获取Web.Config数据库连接字符串
       SqlConnection  SqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["connroom"].ConnectionString.ToString ());
        //构造函数创建连接,并打开连接
       con = new SqlConnection(SqlConn.ToString ());
        con.Open();   //打开链接
}   
    //执行SQL语句:插入、修改
    public bool ExceSQL(string strSql)   
    {
        //执行INSERT、UPDATE、DEIETE、CREATE TABLE、CREATE PROCEDURE以及不返回结果的存储过程
        //根据Sql语句和数据源连接创建SqlCommand对象
        com = new SqlCommand(strSql, con);
        try
        {
            //SqlCommand的ExecuteNonQuery方法,类型为int,执行不返回结果的SQL语句,
            //包括INSERT、UPDATE、DEIETE、CREATE TABLE、CREATE PROCEDURE以及不返回结果的存储过程
            com.ExecuteNonQuery();
            return true;
        }
        catch
        {
            return false;
        }
        finally
        {
            //关闭连接
            con.Close();
        }
}

    public SqlDataReader ExceRead(string strSql)
    {
        //执行SELECT、TableDirect命令或有返回结果的存储过程
        if (con.State != ConnectionState.Open)
        {
            con.Open();
        }
        //根据Sql语句和数据源连接创建SqlCommand对象
        com = new SqlCommand(strSql, con);
        //类型为SqlDataReader,执行SELECT、TableDirect命令或有返回结果的存储过程
        SqlDataReader read = com.ExecuteReader();
        return read;
    }
    public DataSet ExceDS(string strSql)
    {
        try
        {
            //根据Sql语句和数据源连接创建SqlCommand对象
            com = new SqlCommand(strSql, con);
            //不用参数的构造函数,创建SqlDataAdapter对象
            sqldata = new SqlDataAdapter();
            //从数据源中检索记录
            sqldata.SelectCommand = com;
            //创建DataSet对象
            DataSet ds = new DataSet();
            //通过添加或更新DataSet中的行填充一个DataTable对象。
            //返回值是成功添加或更新的行的数量
            sqldata.Fill(ds);
            return ds;
        }
        finally
        {
            con.Close();
        }
    }   

}

调用页面user_manager_album.aspx 的html代码:

运行提示:从索引 0 处开始,初始化字符串的格式不符合规范。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.ArgumentException: 从索引 0 处开始,初始化字符串的格式不符合规范。

源错误: 


行 31:        SqlConnection  SqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["connroom"].ConnectionString.ToString ());
行 32:         //构造函数创建连接,并打开连接
行 33:        con = new SqlConnection(SqlConn.ToString ());
行 34:         con.Open();   //打开链接
行 35:  }   
 

源文件: f:\ASP\myromm1231\myroom4\App_Code\conn.cs    行: 33 

堆栈跟踪: 


[ArgumentException: 从索引 0 处开始,初始化字符串的格式不符合规范。]
   System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString, Int32 currentPosition, StringBuilder buffer, Boolean useOdbcRules, String& keyname, String& keyvalue) +1286
   System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey) +115
   System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules) +99
   System.Data.SqlClient.SqlConnectionString..ctor(String connectionString) +52
   System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous) +25
   System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(String connectionString, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions) +141
   System.Data.SqlClient.SqlConnection.ConnectionString_Set(String value) +38
   System.Data.SqlClient.SqlConnection.set_ConnectionString(String value) +4
   System.Data.SqlClient.SqlConnection..ctor(String connectionString) +21
   conn..ctor() in f:\ASP\myromm1231\myroom4\App_Code\conn.cs:33
   qinshi_user_manager_album.Page_Load(Object sender, EventArgs e) in f:\ASP\myromm1231\myroom4\qinshi\user_manager_album.aspx.cs:24
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +13
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +45
   System.Web.UI.Control.OnLoad(EventArgs e) +80
   System.Web.UI.Control.LoadRecursive() +49
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3745

 



--------------------编程问答-------------------- 检查一下ConfigurationManager.ConnectionStrings["connroom"].ConnectionString.ToString ()里的连接串正确否 --------------------编程问答-------------------- 顶一下,不是很清楚 --------------------编程问答--------------------
SqlConnection  SqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["connroom"].ConnectionString.ToString ()); 
        //构造函数创建连接,并打开连接 
      con = new SqlConnection(SqlConn.ToString ()); 
--------------------编程问答-------------------- SqlConn.ToString()的值是System.Data.SqlClient.SqlConnection;为什么要实例化SqlConn,直接
con=new SqlConnection(ConfigurationManager.ConnectionStrings["connroom"].ConnectionString.ToString ());

不行么? --------------------编程问答-------------------- 行 33:        con = new SqlConnection(SqlConn.ToString ()); 

改为:

行 33:        con = SqlConn;  --------------------编程问答--------------------

public conn() 

        //获取Web.Config数据库连接字符串 
        //构造函数创建连接,并打开连接 
      con = new SqlConnection(ConfigurationManager.ConnectionStrings["connroom"].ConnectionString); 
      con.Open();  //打开链接 
}  

这样就行了,不明白要绕那么多弯干什么? --------------------编程问答-------------------- SqlConnection  SqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["connroom"].ConnectionString.ToString ()); 
        //构造函数创建连接,并打开连接 
       con = SqlConn
      con.open();这样应该可以 --------------------编程问答-------------------- 哥们,你连接字符串["connroom"]确定没有写错? --------------------编程问答-------------------- 数据库连接错误 --------------------编程问答-------------------- //获取Web.Config数据库连接字符串 
      SqlConnection  SqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["connroom"].ConnectionString.ToString ()); 
有问题好像!!!(出现了两个ConnectionStrings??)
--------------------编程问答-------------------- SqlConnection  SqlConn = new SqlConnection();
        //构造函数创建连接,并打开连接
      con = new SqlConnection(SqlConn.ToString ()); 

你可以按上面的同志们那样写,也可以定义字符串就可以了。
String connString=ConfigurationManager.ConnectionStrings["connroom"].ConnectionString.ToString ();
conn=new SqlConnection(connString); --------------------编程问答-------------------- up --------------------编程问答-------------------- 楼主绕弯儿了.. --------------------编程问答-------------------- string strconn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

SqlConnection sqlconn = new SqlConnection(strconn);
以上可成功连接数据库!!!
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,