获取返回,错误以将nvarchar转换为bigint

时间:2017-11-03 10:54:59

标签: reactjs web-services react-native login fetch

我是react-native的新手,我尝试使用GET为登录页面创建一个获取请求。我和WebService交谈。当我硬编码登录和密码时,响应是正确的,但如果我使用我自己的变量,如:this.state.login我有以下错误:

  

System.Data.SqlClient.SqlException:Erreur de conversion du typededonnéesnvarcharen bigint。      àSystem.Data.SqlClient.SqlConnection.OnError(SqlException异常,Boolean breakConnection,Action 1 wrapCloseInAction) à System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction)      àSystem.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,Boolean callerHasConnectionLock,Boolean asyncClose)      àSystem.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj,Boolean& dataReady)      àSystem.Data.SqlClient.SqlDataReader.TryConsumeMetaData()      àSystem.Data.SqlClient.SqlDataReader.get_MetaData()      àSystem.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,String resetOptionsString)      àSystem.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,Boolean async,Int32 timeout,Task& task,Boolean asyncWrite,SqlDataReader ds,Boolean describeParameterEncryptionRequest)      àSystem.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String方法,TaskCompletionSource 1 completion, Int32 timeout, Task& task, Boolean asyncWrite) à System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) à System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) à System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) à System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) à System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) à System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior) à System.Data.Common.DbDataAdapter.Fill(DataTable dataTable) à dataClub.DSMembreTableAdapters.TAMembreBureau.GetDataForLogin(String LICI_NUMERO, String LICI_MDP, Nullable 1 LOGINADMIN)dans C:\ Users \ vfelder \ Documents \ Visual Studio 2015 \ Projects \ ClubOnline \ dataClub \ DSMembre.Designer.cs:ligne 3869      àClubOnline.WebServices.AppliMobile.connexion(String p_login,String p_mdp)dans C:\ Users \ vfelder \ Documents \ Visual Studio 2015 \ Projects \ ClubOnline \ ClubOnline \ WebServices \ AppliMobile.asmx.cs:ligne 46

这是我的构造函数和获取请求:

constructor(){
    super();
    this.state = {
        login: '',
        password: ''
    }
}

userLogin(){
    fetch('myWebService?p_login=this.state.login&p_mdp=this.state.password',
        {
            method: 'GET',
            headers:{
                'Content-Type': 'application/x-www-form-urlencoded',
            },
        })
        .then(res => console.log(res));
}

这是我的TextInput和Button与我的状态相关:

                <TextInput
                    onChangeText={(text)=>this.setState({login: text})}
                    placeholder={'Identifiant'}
                    ref={"login"}
                    returnKeyType={'next'}
                    style={styles.input}
                    value={this.state.login}
                />
                <TextInput
                    editable={true}
                    onChangeText={(text)=>this.setState({password: text})}
                    placeholder={"Mot de passe"}
                    ref={'password'}
                    secureTextEntry={true}
                    style={styles.input}
                    value={this.state.password}
                />
                <Button
                    onPress={this.userLogin.bind(this)}
                    style={styles.buttonContainer}
                    title={"Connexion"}>
                </Button>

我尝试发布帖子请求或者直接使用XMLHttpRequest,但是如果我使用我自己的变量,则会产生同样的错误。我真的不知道我错过了什么。我希望尽可能具体。

1 个答案:

答案 0 :(得分:1)

您使用this.state.loginthis.state.password作为字符串,而不是将值放在单引号中'

fetch('your_url?p_login=this.state.login&p_mdp=this.state.password',

使用以下方法之一更改此行:

使用正确的单引号

fetch('your_url?p_login='+this.state.login+'&p_mdp='+this.state.password,

或:使用新的ES6语法${var}

fetch(`your_url?p_login=${this.state.login}&p_mdp=${this.state.password}`,
  

注意:我已使用your_url替换了您的网址,因此您可以轻松查看   你需要做出的改变